Namespaces
Variants

Named Requirements

From cppreference.net
C++ named requirements

Именованные требования , перечисленные на этой странице, представляют собой именованные требования, используемые в нормативном тексте стандарта C++ для определения ожиданий стандартной библиотеки.

Обязанность обеспечить, чтобы шаблоны библиотеки инстанцировались с аргументами шаблонов, удовлетворяющими этим требованиям, лежит на программисте. Невыполнение этого может привести к очень сложным диагностическим сообщениям компилятора.

Некоторые из этих требований формализованы в C++20 с использованием функции языка concepts .

Содержание

Основные

определяет, что объект типа может быть сконструирован по умолчанию
(именованное требование)
определяет, что объект типа может быть сконструирован из rvalue
(именованное требование)
определяет, что объект типа может быть сконструирован из lvalue
(именованное требование)
определяет, что объект типа может быть присвоен из rvalue
(именованное требование)
определяет, что объект типа может быть присвоен из lvalue
(именованное требование)
определяет, что объект данного типа может быть уничтожен
(именованное требование)

Свойства типов

Примечание: стандарт не определяет именованные требования с именами, указанными в этой подкатегории.
Это категории типов, определенные базовым языком. Они включены сюда как именованные требования только для обеспечения согласованности.
типы объектов, которые не являются массивами или классами
(именованное требование)
(устарело в C++20)
POD (Plain Old Data) типы, совместимые с C struct
(именованное требование)
объекты этих типов могут сохранять свои значения после копирования их базовых байтов
(именованное требование)
(C++11) (deprecated in C++26)
объекты этих типов могут быть тривиально сконструированы и скопированы
(именованное требование)
эти типы полезны для взаимодействия с кодом, написанным на других языках программирования
(named requirement)
объекты этих типов могут быть неявно созданы, и их время жизни может быть неявно начато
(именованное требование)

Общебиблиотечные

булевы операции ( operator && , operator || , и operator ! ) имеют обычную семантику
(именованное требование)
operator== является отношением эквивалентности
(именованное требование)
operator< является отношением строгого слабого порядка
(именованное требование)
может быть обменяно с помощью вызова неквалифицированной нечленной функции swap ( )
(именованное требование)
итератор LegacyIterator , разыменовывающийся в тип Swappable
(именованное требование)
тип, подобный указателю, поддерживающий нулевое значение
(именованное требование)
(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)
элемент может быть уничтожен с использованием аллокатора
(именованное требование)

Итератор

общая концепция для доступа к данным внутри некоторой структуры данных
(именованное требование)
итератор, который может использоваться для чтения данных
(именованное требование)
итератор, который может использоваться для записи данных
(именованное требование)
итератор, который может использоваться для многократного чтения данных
(именованное требование)
итератор, который можно как увеличивать, так и уменьшать
(именованное требование)
итератор, который можно перемещать за постоянное время
(именованное требование)
итератор к непрерывно размещенным элементам
(именованное требование)
итератор, который может использоваться во время вычисления константных выражений
(именованное требование)

Функции потокового ввода/вывода

функция ввода потока, которая не пропускает начальные пробельные символы и подсчитывает обработанные символы
(именованное требование)
функция ввода потока, которая пропускает начальные пробелы
(именованное требование)
базовая функция вывода потока
(именованное требование)
функция вывода в поток, которая устанавливает failbit при ошибках и возвращает ссылку на поток
(именованное требование)

Форматтеры

абстрагирует операции форматирования для заданного типа аргумента форматирования и типа символов
(именованное требование)
(C++20)
определяет функции, используемые библиотекой форматирования
(именованное требование)

Генерация случайных чисел

потребляет последовательность целых чисел и производит последовательность 32-битных беззнаковых значений
(именованное требование)
возвращает равномерно распределённые случайные беззнаковые целые числа
(именованное требование)
детерминированный UniformRandomBitGenerator , определяемый начальным значением
(именованное требование)
адаптер RandomNumberEngine , который преобразует выходные данные другого RandomNumberEngine
(именованное требование)
возвращает случайные числа, распределенные в соответствии с заданной математической функцией плотности вероятности
(именованное требование)

Конкурентность

предоставляет семантику исключительного владения для агентов выполнения (т.е. потоков)
(именованное требование)
(C++11)
объект BasicLockable с поддержкой попытки захвата блокировки
(именованное требование)
a Lockable that supports timed lock acquisition
(named requirement)
предоставляет семантику совместного владения для агентов выполнения (т.е. потоков)
(именованное требование)
концепция 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
(именованное требование)
a Mutex that supports shared ownership semantics
(named requirement)
мьютекс, Mutex поддерживающий семантику разделяемого владения
(именованное требование)
a TimedMutex that supports shared ownership semantics
(named requirement)

Диапазоны

объект FunctionObject , который создаёт адаптер диапазона из viewable_range и дополнительных аргументов
(именованное требование)
объект FunctionObject поддерживающий оператор конвейера
(именованное требование)

Настройка многомерного представления

управляет отображением многомерного индекса в mdspan
(именованное требование)
политика, которая содержит LayoutMapping требования
(именованное требование)
политика, которая управляет доступом к дескриптору данных в mdspan
(именованное требование)

Другое

описывает свойство типа
(именованное требование)
описывает отношение между двумя типами
(именованное требование)
изменяет свойство типа
(именованное требование)
(C++11)
агрегирует длительность, момент времени и функцию для получения текущего момента времени
(именованное требование)
часы Clock , которые не генерируют исключения
(именованное требование)
определяет типы и функции для символьного типа
(именованное требование)
bitset, целое число или перечисление
(именованное требование)
тип, для которого инициализация фактически эквивалентна присваиванию
(именованное требование)
определяет типы и функции, используемые библиотекой регулярных выражений
(именованное требование)
тип с constexpr конструктором
(именованное требование)