Именованные Требования
Материал из cppreference.com
< cpp
Именованные требования перечисленные на этой странице, представляют собой именованные требования, используемые в нормативном тексте стандарта C++ для определения ожиданий от стандартной библиотеки.
Некоторые из этих требований формализованы в C++20 с использованием языковой функциональности концепты. До них ответственность за то, чтобы шаблоны библиотек были созданы с аргументами шаблона, удовлетворяющими этим требованиям, лежала на программисте. Несоблюдение этого правила может привести к очень сложной диагностике компилятора.
Основы | ||
| указывает, что объект типа может быть сконструирован по умолчанию (именованное требование) | ||
| (C++11) |
указывает, что объект типа может быть построен из rvalue (именованное требование) | |
| указывает, что объект типа может быть построен из lvalue (именованное требование) | ||
| (C++11) |
указывает, что объекту типа может быть присвоено rvalue (именованное требование) | |
| указывает, что объекту типа может быть присвоено lvalue (именованное требование) | ||
| указывает, что объект данного типа может быть уничтожен (именованное требование) | ||
Свойства типа | ||
| Примечание: стандарт не определяет именованные требования с именами, указанными в этой подкатегории. Это категории типов, определяемые основным языком. Они включены здесь как именованные требования только для единообразия. | ||
| типы объектов, которые не являются типами массивов или типами классов (именованное требование) | ||
| Типы POD (Обычные Старые Данные - Plain Old Data), совместимые с C struct (именованное требование) | ||
| (C++11) |
объекты этих типов могут сохранять свои значения после копирования их базовых байтов (именованное требование) | |
| (C++11) |
объекты этих типов могут быть тривиально созданы и скопированы (именованное требование) | |
| (C++11) |
эти типы полезны для взаимодействия с кодом, написанным на других языках программирования (именованное требование) | |
| (C++20) |
объекты этих типов могут быть созданы неявно, и их время жизни может начаться неявно (именованное требование) | |
В масштабах библиотеки | ||
operator== является отношением эквивалентности (именованное требование) | ||
operator< является отношением строгого квазиупорядочивания (именованное требование) | ||
| (C++11) |
может быть заменён неквалифицированным вызовом функции, не являющейся элементом swap() (именованное требование) | |
| (C++11) |
LegacyIterator разыменованный в тип Swappable (именованное требование) | |
| (C++11) |
указатель-подобный тип, поддерживающий нулевое значение (именованное требование) | |
| (C++11) |
FunctionObject, который на входе с разными значениями имеет низкую вероятность выдачи одного и того же выхода (именованное требование) | |
| тип класса, который содержит информацию о распределении памяти (именованное требование) | ||
| объект, который можно вызвать с помощью синтаксиса вызова функции (именованное требование) | ||
| тип, для которого определена операция вызова (именованное требование) | ||
| FunctionObject, который возвращает значение, которое можно преобразовать в bool для одного аргумента, не изменяя его (именованное требование) | ||
| FunctionObject, который возвращает значение, которое можно преобразовать в bool для двух аргументов, не изменяя их (именованное требование) | ||
| BinaryPredicate устанавливающий отношение порядка (именованное требование) | ||
Контейнер | |
| структура данных, которая обеспечивает доступ к элементам с помощью итераторов (именованное требование) | |
| контейнер, использующий двунаправленные итераторы (именованное требование) | |
| (C++11) |
контейнер, использующий аллокатор (именованное требование) |
| контейнер с элементами, хранящимися линейно (именованное требование) | |
| (C++17) |
контейнер с элементами, хранящимися в соседних адресах памяти (именованное требование) |
| контейнер, который хранит элементы, связывая их с ключами (именованное требование) | |
| контейнер, в котором хранятся элементы, хранящиеся в корзинах, путём связывания их с ключами (именованное требование) | |
Элемент контейнера | |
| (C++11) |
элемент может быть сконструирован по умолчанию в неинициализированном хранилище (именованное требование) |
| (C++11) |
элемент может быть сконструирован копированием в неинициализированное хранилище (именованное требование) |
| (C++11) |
элемент может быть сконструирован перемещением в неинициализированное хранилище (именованное требование) |
| (C++11) |
элемент может быть построен в неинициализированном хранилище (именованное требование) |
| (C++11) |
элемент может быть уничтожен с помощью аллокатора (именованное требование) |
Итератор | |
| общая концепция доступа к данным в некоторой структуре данных (именованное требование) | |
| итератор, который можно использовать для чтения данных (именованное требование) | |
| итератор, который можно использовать для записи данных (именованное требование) | |
| итератор, который можно использовать для многократного чтения данных (именованное требование) | |
| итератор, который можно как инкрементировать, так и декрементировать (именованное требование) | |
| итератор, который можно продвигать за постоянное время (именованное требование) | |
| (C++17) |
итератор для размещённых смежно элементов (именованное требование) |
| (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++11) |
описывает свойство типа (именованное требование) |
| (C++11) |
описывает отношения между двумя типами (именованное требование) |
| (C++11) |
изменяет свойство типа (именованное требование) |
| (C++11) |
объединяет продолжительность, момент времени и функцию для получения текущего момента времени (именованное требование) |
| (C++11) |
Clock, который не генерирует исключения (именованное требование) |
| определяет типы и функции для символьного типа (именованное требование) | |
| битовый набор, целое число или перечисление (именованное требование) | |
| тип, для которого инициализация фактически равна присвоению (именованное требование) | |
| (C++11) |
определяет типы и функции, используемые библиотекой регулярных выражений (именованное требование) |
| (C++11)(устарело в C++20) |
тип с constexpr конструктором (именованное требование) |
| (C++20) |
определяет функции, используемые библиотекой форматирования (именованное требование) |
| Этот раздел не завершён Причина: Есть ли другие недостающие требования? |