Spec-Zone.ru › C++

Именованные требования

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

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

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

Основные

DefaultConstructible
указывает, что объект данного типа можно сконструировать по умолчанию
(именованное требование)
MoveConstructible
(C++11)
указывает, что объект данного типа можно сконструировать из rvalue
(именованное требование)
CopyConstructible
указывает, что объект данного типа можно сконструировать из lvalue
(именованное требование)
MoveAssignable
(C++11)
указывает, что объект данного типа можно присвоить из rvalue
(именованное требование)
CopyAssignable
указывает, что объект данного типа можно присвоить из lvalue
(именованное требование)
Destructible
указывает, что объект данного типа можно уничтожить
(именованное требование)

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

Примечание: стандарт не определяет именованные требования с названиями, указанными в этой подкатегории.
Это категории типов, определённые основным языком. Здесь они включены в качестве именованных требований только для единообразия.
ScalarType
объектные типы, не являющиеся типами массивов или классов
(именованное требование)
PODType
(устарело в C++20)
типы POD (простые старые данные), совместимые со struct языка C
(именованное требование)
TriviallyCopyable
(C++11)
объекты этих типов сохраняют свои значения после копирования их базовых байтов
(именованное требование)
TrivialType
(C++11)(устарело в C++26)
объекты этих типов можно тривиально конструировать и копировать
(именованное требование)
StandardLayoutType
(C++11)
эти типы удобны для взаимодействия с кодом, написанным на других языках программирования
(именованное требование)
ImplicitLifetimeType
объекты этих типов можно неявно создавать, а время их жизни можно неявно начинать
(именованное требование)

Общие для библиотеки

BooleanTestable
логические операции (operator&&, operator|| и operator!) имеют обычную семантику
(именованное требование)
EqualityComparable
operator== является отношением эквивалентности
(именованное требование)
LessThanComparable
operator< является отношением строгого слабого порядка
(именованное требование)
Swappable
можно обменять с помощью неквалифицированного вызова функции-нечлена swap()
(именованное требование)
ValueSwappable
(C++11)
LegacyIterator, разыменование которого даёт тип Swappable
(именованное требование)
NullablePointer
(C++11)
тип, подобный указателю, поддерживающий нулевое значение
(именованное требование)
Hash
(C++11)
FunctionObject, у которого для входных данных с разными значениями мала вероятность получить одинаковый результат
(именованное требование)
Allocator
тип класса, содержащий информацию о выделении памяти
(именованное требование)
FunctionObject
объект, который можно вызвать с помощью синтаксиса вызова функции
(именованное требование)
Callable
тип, для которого определена операция invoke
(именованное требование)
Predicate
FunctionObject, который для одного аргумента возвращает значение, преобразуемое в bool, не изменяя этот аргумент
(именованное требование)
BinaryPredicate
FunctionObject, который для двух аргументов возвращает значение, преобразуемое в bool, не изменяя их
(именованное требование)
Compare
BinaryPredicate, задающий отношение порядка
(именованное требование)

Контейнер

Container
структура данных, обеспечивающая доступ к элементам с помощью итераторов
(именованное требование)
ReversibleContainer
контейнер, использующий двунаправленные итераторы
(именованное требование)
AllocatorAwareContainer
(C++11)
контейнер, использующий аллокатор
(именованное требование)
SequenceContainer
контейнер с элементами, хранящимися в линейном порядке
(именованное требование)
ContiguousContainer
(C++17)
контейнер с элементами, хранящимися по соседним адресам в памяти
(именованное требование)
AssociativeContainer
контейнер, хранящий элементы в соответствии с сопоставленными им ключами
(именованное требование)
UnorderedAssociativeContainer
(C++11)
контейнер, хранящий элементы в корзинах в соответствии с сопоставленными им ключами
(именованное требование)
Элемент контейнера
DefaultInsertable
(C++11)
элемент можно сконструировать по умолчанию в неинициализированном хранилище
(именованное требование)
CopyInsertable
(C++11)
элемент можно скопировать в неинициализированное хранилище
(именованное требование)
MoveInsertable
(C++11)
элемент можно переместить в неинициализированное хранилище
(именованное требование)
EmplaceConstructible
(C++11)
элемент можно сконструировать в неинициализированном хранилище
(именованное требование)
Erasable
(C++11)
элемент можно уничтожить с помощью аллокатора
(именованное требование)

Итератор

LegacyIterator
общая концепция доступа к данным в некоторой структуре данных
(именованное требование)
LegacyInputIterator
итератор, который можно использовать для чтения данных
(именованное требование)
LegacyOutputIterator
итератор, который можно использовать для записи данных
(именованное требование)
LegacyForwardIterator
итератор, который можно использовать для многократного чтения данных
(именованное требование)
LegacyBidirectionalIterator
итератор, который можно как увеличивать, так и уменьшать
(именованное требование)
LegacyRandomAccessIterator
итератор, который можно перемещать за постоянное время
(именованное требование)
LegacyContiguousIterator
(C++17)
итератор для элементов, размещённых в непрерывной области памяти
(именованное требование)
ConstexprIterator
(C++20)
итератор, который можно использовать при вычислении константных выражений
(именованное требование)

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

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

Форматтеры

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

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

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

Параллельное выполнение

BasicLockable
(C++11)
предоставляет агентам выполнения (то есть потокам) семантику исключительного владения
(именованное требование)
Lockable
(C++11)
BasicLockable, поддерживающий попытку захвата блокировки
(именованное требование)
TimedLockable
(C++11)
Lockable, поддерживающий захват блокировки с ограничением по времени
(именованное требование)
SharedLockable
(C++14)
предоставляет агентам выполнения (то есть потокам) семантику совместного владения
(именованное требование)
SharedTimedLockable
(C++14)
SharedLockable, поддерживающий захват блокировки с ограничением по времени
(именованное требование)
Mutex
(C++11)
Lockable, защищающий от гонок данных и обеспечивающий последовательно-согласованную синхронизацию
(именованное требование)
TimedMutex
(C++11)
TimedLockable, защищающий от гонок данных и обеспечивающий последовательно-согласованную синхронизацию
(именованное требование)
SharedMutex
(C++17)
Mutex, поддерживающий семантику совместного владения
(именованное требование)
SharedTimedMutex
(C++14)
TimedMutex, поддерживающий семантику совместного владения
(именованное требование)

Диапазоны

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

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

LayoutMapping
(C++23)
управляет отображением многомерного индекса в mdspan
(именованное требование)
LayoutMappingPolicy
(C++23)
политика, удовлетворяющая требованиям LayoutMapping
(именованное требование)
AccessorPolicy
(C++23)
политика, управляющая доступом к дескриптору данных в mdspan
(именованное требование)

Прочее

UnaryTypeTrait
(C++11)
описывает свойство типа
(именованное требование)
BinaryTypeTrait
(C++11)
описывает отношение между двумя типами
(именованное требование)
TransformationTrait
(C++11)
изменяет свойство типа
(именованное требование)
Clock
(C++11)
объединяет длительность, момент времени и функцию получения текущего момента времени
(именованное требование)
TrivialClock
(C++11)
Clock, не генерирующий исключений
(именованное требование)
CharTraits
определяет типы и функции для символьного типа
(именованное требование)
BitmaskType
битовая маска, целое число или перечисление
(именованное требование)
NumericType
тип, для которого инициализация фактически эквивалентна присваиванию
(именованное требование)
RegexTraits
(C++11)
определяет типы и функции, используемые библиотекой регулярных выражений
(именованное требование)
LiteralType
(C++11)
тип с конструктором constexpr
(именованное требование)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API