26 Containers library [containers]

26.6 Container adaptors [container.adaptors]

26.6.1 In general [container.adaptors.general]

Заголовки <queue> и <stack> определить контейнер адаптеров queue, priority_­queueи stack.

Каждый адаптер контейнера принимает Container параметр шаблона, а каждый конструктор - Container аргумент ссылки. Этот контейнер копируется в Container член каждого адаптера. Если контейнер принимает распределитель, то совместимый распределитель может быть передан в конструктор адаптера. В противном случае для аргумента контейнера используется обычная конструкция копирования или перемещения. Первый параметр шаблона T адаптеров контейнера должен обозначать тот же тип, что и Container​::​value_­type.

Для контейнерных адаптеров ни одна swap функция не генерирует исключение, если это исключение не вызвано заменой адаптера Container или Compare объекта (если есть).

Руководство по вычету для контейнерного адаптера не должно участвовать в разрешении перегрузки, если выполняется одно из следующих условий:

  • У него есть InputIterator параметр шаблона, и для этого параметра выводится тип, который не квалифицируется как итератор ввода.

  • У него есть Compare параметр шаблона, и для этого параметра выводится тип, который квалифицируется как распределитель.

  • У него есть Container параметр шаблона, и для этого параметра выводится тип, который квалифицируется как распределитель.

  • У него есть Allocator параметр шаблона, и для этого параметра выводится тип, который не квалифицируется как распределитель.

  • У него есть параметры Container и Allocator шаблона, и uses_­allocator_­v<Container, Allocator> есть false.