7.10 Концепции C++
Концепции C++ обеспечивают значительно улучшенную поддержку обобщённого программирования. В частности, они позволяют задавать ограничения на аргументы шаблонов. Эти ограничения используются для расширения обычных возможностей перегрузки и частичной специализации языка, позволяя обобщённым структурам данных и алгоритмам «уточняться» на основе их свойств, а не имён типов.
Следующие ключевые слова зарезервированы для концепций.
assumes-
Заявляет выражение как предположение и, если возможно, проверяет, что предположение является допустимым. Например,
assume(n > 0). axiom-
Вводит определение аксиомы. Аксиомы вводят требования к значениям.
forall-
Вводит всеобщно квантифицированный объект в аксиоме. Например,
forall (int n) n + 0 == n). requires-
Вводит ограничения на аргументы шаблонов или требования к члену-функции шаблона класса.
concept-
Вводит определение концепции. Концепции представляют собой набор синтаксических и семантических требований к типам и их значениям.
Передняя часть также предоставляет ряд внутренних механизмов, которые могут быть использованы для упрощения написания признаков типов. Обратите внимание, что некоторые из этих признаков, вероятно, будут удалены в будущем.
__is_same (type1, type2)-
Двоичный признак типа: истинно, когда аргументы типа одинаковы.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gcc/C_002b_002b-Concepts.html