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