Именованные требования
Именованные требования, перечисленные на этой странице, используются в нормативном тексте стандарта C++ для определения требований к стандартной библиотеке.
Программист несёт ответственность за то, чтобы шаблоны библиотеки инстанцировались с аргументами шаблона, удовлетворяющими этим требованиям. В противном случае диагностика компилятора может быть очень сложной.
Некоторые из этих требований формализованы в C++20 с помощью языковой возможности концептов.
Основные |
|
| указывает, что объект данного типа можно сконструировать по умолчанию (именованное требование) |
|
|
(C++11) | указывает, что объект данного типа можно сконструировать из rvalue (именованное требование) |
| указывает, что объект данного типа можно сконструировать из lvalue (именованное требование) |
|
|
(C++11) | указывает, что объект данного типа можно присвоить из rvalue (именованное требование) |
| указывает, что объект данного типа можно присвоить из lvalue (именованное требование) |
|
| указывает, что объект данного типа можно уничтожить (именованное требование) |
|
Свойства типов |
|
| Примечание: стандарт не определяет именованные требования с названиями, указанными в этой подкатегории. Это категории типов, определённые основным языком. Здесь они включены в качестве именованных требований только для единообразия. |
|
| объектные типы, не являющиеся типами массивов или классов (именованное требование) |
|
|
(устарело в C++20) | типы POD (простые старые данные), совместимые со struct языка C (именованное требование) |
|
(C++11) | объекты этих типов сохраняют свои значения после копирования их базовых байтов (именованное требование) |
|
(C++11)(устарело в C++26) | объекты этих типов можно тривиально конструировать и копировать (именованное требование) |
|
(C++11) | эти типы удобны для взаимодействия с кодом, написанным на других языках программирования (именованное требование) |
| объекты этих типов можно неявно создавать, а время их жизни можно неявно начинать (именованное требование) |
|
Общие для библиотеки |
|
| логические операции (operator&&, operator|| и operator!) имеют обычную семантику (именованное требование) |
|
operator== является отношением эквивалентности(именованное требование) |
|
operator< является отношением строгого слабого порядка(именованное требование) |
|
можно обменять с помощью неквалифицированного вызова функции-нечлена swap()(именованное требование) |
|
|
(C++11) | LegacyIterator, разыменование которого даёт тип Swappable (именованное требование) |
|
(C++11) | тип, подобный указателю, поддерживающий нулевое значение (именованное требование) |
|
(C++11) | FunctionObject, у которого для входных данных с разными значениями мала вероятность получить одинаковый результат (именованное требование) |
| тип класса, содержащий информацию о выделении памяти (именованное требование) |
|
| объект, который можно вызвать с помощью синтаксиса вызова функции (именованное требование) |
|
| тип, для которого определена операция invoke (именованное требование) |
|
| FunctionObject, который для одного аргумента возвращает значение, преобразуемое в bool, не изменяя этот аргумент (именованное требование) |
|
| FunctionObject, который для двух аргументов возвращает значение, преобразуемое в bool, не изменяя их (именованное требование) |
|
| BinaryPredicate, задающий отношение порядка (именованное требование) |
|
Контейнер |
|
| структура данных, обеспечивающая доступ к элементам с помощью итераторов (именованное требование) |
|
| контейнер, использующий двунаправленные итераторы (именованное требование) |
|
|
(C++11) | контейнер, использующий аллокатор (именованное требование) |
| контейнер с элементами, хранящимися в линейном порядке (именованное требование) |
|
|
(C++17) | контейнер с элементами, хранящимися по соседним адресам в памяти (именованное требование) |
| контейнер, хранящий элементы в соответствии с сопоставленными им ключами (именованное требование) |
|
|
(C++11) | контейнер, хранящий элементы в корзинах в соответствии с сопоставленными им ключами (именованное требование) |
Элемент контейнера |
|
|
(C++11) | элемент можно сконструировать по умолчанию в неинициализированном хранилище (именованное требование) |
|
(C++11) | элемент можно скопировать в неинициализированное хранилище (именованное требование) |
|
(C++11) | элемент можно переместить в неинициализированное хранилище (именованное требование) |
|
(C++11) | элемент можно сконструировать в неинициализированном хранилище (именованное требование) |
|
(C++11) | элемент можно уничтожить с помощью аллокатора (именованное требование) |
Итератор |
|
| общая концепция доступа к данным в некоторой структуре данных (именованное требование) |
|
| итератор, который можно использовать для чтения данных (именованное требование) |
|
| итератор, который можно использовать для записи данных (именованное требование) |
|
| итератор, который можно использовать для многократного чтения данных (именованное требование) |
|
| итератор, который можно как увеличивать, так и уменьшать (именованное требование) |
|
| итератор, который можно перемещать за постоянное время (именованное требование) |
|
|
(C++17) | итератор для элементов, размещённых в непрерывной области памяти (именованное требование) |
|
(C++20) | итератор, который можно использовать при вычислении константных выражений (именованное требование) |
Функции потокового ввода-вывода |
|
| функция потокового ввода, которая не пропускает начальные пробельные символы и подсчитывает обработанные символы (именованное требование) |
|
| функция потокового ввода, которая пропускает начальные пробельные символы (именованное требование) |
|
| базовая функция потокового вывода (именованное требование) |
|
| функция потокового вывода, которая при ошибках устанавливает failbit и возвращает ссылку на поток (именованное требование) |
|
Форматтеры |
|
|
(C++20) | обобщает операции форматирования для заданного типа аргумента форматирования и типа символов (именованное требование) |
|
(C++20) | определяет функции, используемые библиотекой форматирования (именованное требование) |
Генерация случайных чисел |
|
|
(C++11) | принимает последовательность целых чисел и формирует последовательность 32-битных беззнаковых значений (именованное требование) |
|
(C++11) | возвращает равномерно распределённые случайные беззнаковые целые числа (именованное требование) |
|
(C++11) | детерминированный UniformRandomBitGenerator, определяемый начальным значением (именованное требование) |
|
(C++11) | RandomNumberEngine, преобразующий выходные данные другого RandomNumberEngine (именованное требование) |
|
(C++11) | возвращает случайные числа, распределённые согласно заданной математической функции плотности вероятности (именованное требование) |
Параллельное выполнение |
|
|
(C++11) | предоставляет агентам выполнения (то есть потокам) семантику исключительного владения (именованное требование) |
|
(C++11) | BasicLockable, поддерживающий попытку захвата блокировки (именованное требование) |
|
(C++11) | Lockable, поддерживающий захват блокировки с ограничением по времени (именованное требование) |
|
(C++14) | предоставляет агентам выполнения (то есть потокам) семантику совместного владения (именованное требование) |
|
(C++14) | SharedLockable, поддерживающий захват блокировки с ограничением по времени (именованное требование) |
|
(C++11) | Lockable, защищающий от гонок данных и обеспечивающий последовательно-согласованную синхронизацию (именованное требование) |
|
(C++11) | TimedLockable, защищающий от гонок данных и обеспечивающий последовательно-согласованную синхронизацию (именованное требование) |
|
(C++17) | Mutex, поддерживающий семантику совместного владения (именованное требование) |
|
(C++14) | TimedMutex, поддерживающий семантику совместного владения (именованное требование) |
Диапазоны |
|
|
(C++20) | FunctionObject, создающий адаптер диапазона из viewable_range и дополнительных аргументов(именованное требование) |
|
(C++20) | FunctionObject, поддерживающий оператор конвейера (именованное требование) |
Настройка многомерного представления |
|
|
(C++23) | управляет отображением многомерного индекса в mdspan(именованное требование) |
|
(C++23) | политика, удовлетворяющая требованиям LayoutMapping (именованное требование) |
|
(C++23) | политика, управляющая доступом к дескриптору данных в mdspan(именованное требование) |
Прочее |
|
|
(C++11) | описывает свойство типа (именованное требование) |
|
(C++11) | описывает отношение между двумя типами (именованное требование) |
|
(C++11) | изменяет свойство типа (именованное требование) |
|
(C++11) | объединяет длительность, момент времени и функцию получения текущего момента времени (именованное требование) |
|
(C++11) | Clock, не генерирующий исключений (именованное требование) |
| определяет типы и функции для символьного типа (именованное требование) |
|
| битовая маска, целое число или перечисление (именованное требование) |
|
| тип, для которого инициализация фактически эквивалентна присваиванию (именованное требование) |
|
|
(C++11) | определяет типы и функции, используемые библиотекой регулярных выражений (именованное требование) |
|
(C++11) | тип с конструктором constexpr (именованное требование) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req