Named Requirements
From cppreference.net
<
cpp
Именованные требования , перечисленные на этой странице, представляют собой именованные требования, используемые в нормативном тексте стандарта C++ для определения ожиданий стандартной библиотеки.
Обязанность обеспечить, чтобы шаблоны библиотеки инстанцировались с аргументами шаблонов, удовлетворяющими этим требованиям, лежит на программисте. Невыполнение этого может привести к очень сложным диагностическим сообщениям компилятора.
Некоторые из этих требований формализованы в C++20 с использованием функции языка concepts .
Основные |
||
|
определяет, что объект типа может быть сконструирован по умолчанию
(именованное требование) |
||
|
(C++11)
|
определяет, что объект типа может быть сконструирован из rvalue
(именованное требование) |
|
|
определяет, что объект типа может быть сконструирован из lvalue
(именованное требование) |
||
|
(C++11)
|
определяет, что объект типа может быть присвоен из rvalue
(именованное требование) |
|
|
определяет, что объект типа может быть присвоен из lvalue
(именованное требование) |
||
|
определяет, что объект данного типа может быть уничтожен
(именованное требование) |
||
Свойства типов |
||
|
Примечание: стандарт не определяет именованные требования с именами, указанными в этой подкатегории.
Это категории типов, определенные базовым языком. Они включены сюда как именованные требования только для обеспечения согласованности. |
||
|
типы объектов, которые не являются массивами или классами
(именованное требование) |
||
|
(устарело в C++20)
|
POD (Plain Old Data) типы, совместимые с C
struct
(именованное требование) |
|
|
(C++11)
|
объекты этих типов могут сохранять свои значения после копирования их базовых байтов
(именованное требование) |
|
|
(C++11)
(deprecated in C++26)
|
объекты этих типов могут быть тривиально сконструированы и скопированы
(именованное требование) |
|
|
(C++11)
|
эти типы полезны для взаимодействия с кодом, написанным на других языках программирования
(named requirement) |
|
|
объекты этих типов могут быть неявно созданы, и их время жизни может быть неявно начато
(именованное требование) |
||
Общебиблиотечные |
||
|
булевы операции (
operator
&&
,
operator
||
, и
operator
!
) имеют обычную семантику
(именованное требование) |
||
operator==
является отношением эквивалентности
(именованное требование) |
||
operator<
является отношением строгого слабого порядка
(именованное требование) |
||
|
может быть обменяно с помощью вызова неквалифицированной нечленной функции
swap
(
)
(именованное требование) |
||
|
(C++11)
|
итератор
LegacyIterator
, разыменовывающийся в тип
Swappable
(именованное требование) |
|
|
(C++11)
|
тип, подобный указателю, поддерживающий нулевое значение
(именованное требование) |
|
|
(C++11)
|
a
FunctionObject
который для различных входных значений имеет низкую вероятность выдачи одинакового результата
(именованное требование) |
|
|
тип класса, содержащий информацию о выделении памяти
(именованное требование) |
||
|
объект, который может быть вызван с использованием синтаксиса вызова функции
(именованное требование) |
||
|
тип, для которого определена операция вызова
(именованное требование) |
||
|
a
FunctionObject
that returns a value convertible to
bool
for one argument without modifying it
(named requirement) |
||
|
объект
FunctionObject
, возвращающий значение, приводимое к
bool
для двух аргументов без их изменения
(именованное требование) |
||
|
a
BinaryPredicate
that establishes an ordering relation
(named requirement) |
||
Контейнер |
|
|
структура данных, которая позволяет доступ к элементам с использованием итераторов
(именованное требование) |
|
|
контейнер, использующий двунаправленные итераторы
(именованное требование) |
|
|
(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)
|
a
Lockable
that supports timed lock acquisition
(named requirement) |
|
(C++14)
|
предоставляет семантику совместного владения для агентов выполнения (т.е. потоков)
(именованное требование) |
|
(C++14)
|
концепция
SharedLockable
с поддержкой захвата блокировки с таймаутом
(именованное требование) |
|
(C++11)
|
a
Lockable
that protects against data races and sequentially consistent synchronization
(named requirement) |
|
(C++11)
|
a
Lockable
that protects against data races and sequentially consistent synchronization
(именованное требование) |
|
(C++11)
|
a
TimedLockable
that protects against data races and sequentially consistent synchronization
(named requirement) |
|
(C++11)
|
a
TimedLockable
that protects against data races and sequentially consistent synchronization
(именованное требование) |
|
(C++17)
|
a
Mutex
that supports shared ownership semantics
(named requirement) |
|
(C++17)
|
мьютекс,
Mutex
поддерживающий семантику разделяемого владения
(именованное требование) |
|
(C++14)
|
a
TimedMutex
that supports shared ownership semantics
(named requirement) |
Диапазоны |
|
|
(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
, которые не генерируют исключения
(именованное требование) |
|
определяет типы и функции для символьного типа
(именованное требование) |
|
|
bitset, целое число или перечисление
(именованное требование) |
|
|
тип, для которого инициализация фактически эквивалентна присваиванию
(именованное требование) |
|
|
(C++11)
|
определяет типы и функции, используемые
библиотекой регулярных выражений
(именованное требование) |
|
(C++11)
|
тип с constexpr конструктором
(именованное требование) |
|
Этот раздел не завершён
Причина: Какие-либо другие недостающие требования? |