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

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

Материал из cppreference.com
< cpp
 
C++
Поддержка компилятором
Автономные и размещённые реализации
Язык
Заголовки стандартной библиотеки
Требования к именованию
Макросы тестирования функциональности (C++20)
Поддержка языка
Библиотека концептов (C++20)
Библиотека метапрограммирования (C++11)
Библиотека диагностики
Библиотека общих утилит
Библиотека строк
Библиотека контейнеров
Библиотека итераторов
Библиотека диапазонов (C++20)
Библиотека алгоритмов
Библиотека численных данных
Библиотека ввода/вывода
Библиотека локализаций
Регулярные выражения (C++11)
Атомарные операции (C++11)
Библиотека поддержки конкуренции (C++11)
Библиотека файловой системы (C++17)
Технические спецификации
Указатель символов
Внешние библиотеки
 
Библиотека концептов
Основные концепты
Сравнительные концепты
Объектные концепты
Функциональные концепты
 

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

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

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

Содержание

Концепты

Определены в пространстве имён 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 налагает строгий слабый порядок
(концепт) [править]

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

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

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

Источник — «https://ru.cppreference.com/mwiki/index.php?title=cpp/concepts&oldid=51942»