X Tutup
The Wayback Machine - https://web.archive.org/web/20220723045511/https://ru.cppreference.com/w/cpp/concepts
Пространства имён
Варианты
Действия

Библиотека концептов (C++20)

Материал из cppreference.com
< cpp
 
 
 

Библиотека концептов предоставляет определения основных концептов библиотеки, которые можно использовать для выполнения проверки аргументов шаблона во время компиляции и выполнения диспетчеризации функций на основе свойств типов. Эти концепты обеспечивают основу для логического мышления в программах.

Большинство концептов стандартной библиотеки налагают как синтаксические, так и семантические требования. Говорят, что стандартный концепт удовлетворяется, если удовлетворяются его синтаксические требования, и моделируется, если он удовлетворяется, и его семантические требования (если таковые имеются) также выполняются.

Как правило, компилятор может проверить только синтаксические требования. Если достоверность или значение программы зависит от того, моделирует ли последовательность аргументов шаблона концепт, и концепт удовлетворяется, но не моделируется, или если семантическое требование не выполняется в точке использования, программа некорректна, диагностика не требуется.

Содержание

Концепты

Определены в пространстве имён std
Основные языковые концепты
Определены в заголовочном файле <concepts>
(C++20)
указывает, что тип совпадает с другим типом
(концепт) [править]
указывает, что тип является производным от другого типа
(концепт) [править]
указывает, что тип неявно преобразуется в другой тип
(концепт) [править]
указывает, что два типа имеют общий ссылочный тип
(концепт) [править]
указывает, что два типа имеют общий тип
(концепт) [править]
(C++20)
указывает, что тип является целым типом
(концепт) [править]
указывает, что тип является целочисленным типом со знаком
(концепт) [править]
указывает, что тип является целым беззнаковым типом
(концепт) [править]
указывает, что тип, это число с плавающей точкой
(концепт) [править]
указывает, что типу может быть присвоен другой тип
(концепт) [править]
указывает, что тип можно поменять местами или что два типа можно поменять местами друг с другом
(концепт) [править]
указывает, что объект данного типа может быть уничтожен
(концепт) [править]
указывает, что переменная типа может быть создана из набора типов аргументов или привязана к ним
(концепт) [править]
указывает, что объект типа может быть сконструирован по умолчанию
(концепт) [править]
указывает, что объект типа может быть сконструирован перемещением
(концепт) [править]
указывает, что объект типа может быть создан копированием и перемещением
(концепт) [править]
Концепты сравнения
Определены в заголовочном файле <concepts>
указывает, что тип может использоваться в логических контекстах
(концепт только для экспозиции) [править]
указывает, что оператор == является отношением эквивалентности
(концепт) [править]
указывает, что операторы сравнения для типа дают общий порядок
(концепт) [править]
Определены в заголовочном файле <compare>
указывает, что оператор <=> даёт согласованный результат для данных типов
(концепт) [править]
Концепты объекта
Определены в заголовочном файле <concepts>
(C++20)
указывает, что объект типа можно перемещать и менять местами
(концепт) [править]
(C++20)
указывает, что объект типа можно копировать, перемещать и менять местами
(концепт) [править]
указывает, что объект типа можно копировать, перемещать, менять местами и создавать по умолчанию
(концепт) [править]
(C++20)
указывает, что тип является регулярным, то есть одновременно semiregular и equality_comparable
(концепт) [править]
Вызываемые концепты
Определены в заголовочном файле <concepts>
указывает, что вызываемый тип может быть вызван с заданным набором типов аргументов
(концепт) [править]
(C++20)
указывает, что вызываемый тип является логическим предикатом
(концепт) [править]
(C++20)
указывает, что вызываемый тип является бинарным отношением
(концепт) [править]
указывает, что relation накладывает отношение эквивалентности
(концепт) [править]
указывает, что relation налагает строгий слабый порядок
(концепт) [править]

Точки кастомизации объектов

обменивает значения двух объектов
(объект точки настройки) [править]

Дополнительные концепты можно найти в библиотеке итераторов, библиотеке алгоритмов и библиотеке диапазонов.

X Tutup