Именованные требования
Именованные требования, перечисленные на этой странице, являются именованными требованиями, используемыми в нормативном тексте стандарта C++, для определения ожиданий стандартной библиотеки.
Некоторые из этих требований формализуются в C++20 с использованием языка концепций. До этого момента программист несёт ответственность за то, чтобы шаблоны библиотек были инстанцированы с аргументами шаблона, которые удовлетворяют этим требованиям. Невыполнение этого может привести к очень сложным диагностикам компилятора.
Основные |
|
| указывает, что объект типа может быть создан по умолчанию (именованное требование) |
|
|
(C++11) | указывает, что объект типа может быть создан из rvalue (именованное требование) |
| указывает, что объект типа может быть создан из lvalue (именованное требование) |
|
|
(C++11) | указывает, что объект типа может быть присвоен из rvalue (именованное требование) |
| указывает, что объект типа может быть присвоен из lvalue (именованное требование) |
|
| указывает, что объект типа может быть уничтожен (именованное требование) |
|
Свойства типов |
|
| Примечание: стандарт не определяет именованные требования с именами, указанными в этой подкатегории. Это категории типов, определённые основным языком. Они включены сюда как именованные требования только для согласованности. |
|
| типы объектов, которые не являются типами массивов или типами классов (именованное требование) |
|
|
(устарело в C++20) | типы POD (Plain Old Data), совместимые с C struct(именованное требование) |
|
(C++11) | объекты этих типов могут сохранять свои значения после копирования своих подлежащих байтов (именованное требование) |
|
(C++11) | объекты этих типов могут быть тривиально созданы и скопированы (именованное требование) |
|
(C++11) | эти типы полезны для взаимодействия с кодом, написанным на других языках программирования (именованное требование) |
| объекты этих типов могут быть неявно созданы, и их жизненный цикл может быть неявно начат (именованное требование) |
|
Вся библиотека |
|
operator== является отношением эквивалентности(именованное требование) |
|
operator< является отношением строгой слабой упорядоченности(именованное требование) |
|
может быть поменяно местами с вызовом неуправляемой нечленной функции swap()(именованное требование) |
|
|
(C++11) | LegacyIterator, который обращается к Swappable типу (именованное требование) |
|
(C++11) | тип, похожий на указатель, поддерживающий значение null (именованное требование) |
|
(C++11) | FunctionObject, который для входов с разными значениями имеет низкую вероятность получения одного и того же выхода (именованное требование) |
| тип класса, содержащий информацию об выделении памяти (именованное требование) |
|
| объект, который может быть вызван с помощью синтаксиса вызова функции (именованное требование) |
|
| тип, для которого определена операция invoke (именованное требование) |
|
FunctionObject, который возвращает значение, преобразуемое в bool для одного аргумента без его изменения(именованное требование) |
|
FunctionObject, который возвращает значение, преобразуемое в bool для двух аргументов без их изменения(именованное требование) |
|
| BinaryPredicate, который устанавливает отношение упорядоченности (именованное требование) |
|
Контейнер |
|
| структура данных, позволяющая получать доступ к элементам с помощью итераторов (имя требования) |
|
| контейнер, использующий двунаправленные итераторы (имя требования) |
|
|
(C++11) | контейнер, использующий allocator (имя требования) |
| контейнер с линейно упорядоченными элементами (имя требования) |
|
|
(C++17) | контейнер с элементами, расположенными по смежным адресам памяти (имя требования) |
| контейнер, хранящий элементы, сопоставляя их с ключами (имя требования) |
|
|
(C++11) | контейнер, хранящий элементы в корзинах, сопоставляя их с ключами (имя требования) |
Элемент контейнера |
|
|
(C++11) | элемент может быть создан по умолчанию в неинициализированном хранилище (имя требования) |
|
(C++11) | элемент может быть скопирован в неинициализированное хранилище (имя требования) |
|
(C++11) | элемент может быть перемещён в неинициализированное хранилище (имя требования) |
|
(C++11) | элемент может быть создан в неинициализированном хранилище (имя требования) |
|
(C++11) | элемент может быть удалён с помощью allocator (имя требования) |
Итератор |
|
| общее понятие для доступа к данным в структуре данных (имя требования) |
|
| итератор, который может использоваться для чтения данных (имя требования) |
|
| итератор, который может использоваться для записи данных (имя требования) |
|
| итератор, который может использоваться для многократного чтения данных (имя требования) |
|
| итератор, который может быть как инкрементирован, так и декрементирован (имя требования) |
|
| итератор, который может быть продвинут за константное время (имя требования) |
|
|
(C++17) | итератор для элементов со смежным расположением в памяти (имя требования) |
|
(C++20) | итератор, который может быть использован во время вычисления константных выражений (имя требования) |
Функции ввода/вывода потоков |
|
| функция ввода потока, которая не пропускает начальные пробелы и считает обработанные символы (имя требования) |
|
| функция ввода потока, которая пропускает начальные пробелы (имя требования) |
|
| базовая функция вывода потока (имя требования) |
|
| функция вывода потока, которая устанавливает флаг ошибки при ошибках и возвращает ссылку на поток (имя требования) |
|
Форматировщики |
|
|
(C++20) | абстрагирует операции форматирования для заданного типа аргумента форматирования и типа символа (имя требования) |
|
(C++20) | определяет функции, используемые библиотекой форматирования форматирования (имя требования) |
Генерация случайных чисел |
|
|
(C++11) | потребляет последовательность целых чисел и генерирует последовательность 32-битных беззнаковых значений (имя требования) |
|
(C++11) | возвращает равномерно распределённые случайные беззнаковые целые числа (имя требования) |
|
(C++11) | детерминированный ГенераторСлучайныхБитов, определяемый затравкой (имя требования) |
|
(C++11) | ДвигательСлучайныхЧисел, преобразующий вывод другого ДвигателяСлучайныхЧисел (имя требования) |
|
(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, создающий адаптер диапазона из диапазона и дополнительных аргументов (имя требования) |
|
(C++20) | FunctionObject, поддерживающий оператор конвейера (имя требования) |
Другое |
|
|
(C++11) | описывает свойство типа (имя требования) |
|
(C++11) | описывает отношение между двумя типами (имя требования) |
|
(C++11) | изменяет свойство типа (имя требования) |
|
(C++11) | агрегирует длительность, момент времени и функцию получения текущего момента времени (имя требования) |
|
(C++11) | Часы, которые не выбрасывают исключений (имя требования) |
| определяет типы и функции для типа символа (имя требования) |
|
| битовая маска, целое число или перечисление (имя требования) |
|
| тип, для которого инициализация фактически равна присваиванию (имя требования) |
|
|
(C++11) | определяет типы и функции, используемые библиотекой регулярных выражений (имя требования) |
|
(C++11) | тип с конструктором constexpr (имя требования) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req