Аннотации (since C++26)
Прикрепляют информацию к объявлениям таким образом, чтобы её могла наблюдать рефлексия.
Синтаксис
Список аннотаций вводится в спецификаторе атрибутов. Каждая аннотация начинается с =.
= constant-expression |
Пояснение
Аннотация может применяться к любому объявлению типа, псевдонима типа, переменной, функции, параметра функции нескалярного типа void, пространства имён, перечислителя, спецификатора базового класса или нестатического члена данных.
Пусть E будет std::meta::reflect_constant(expr) (где expr — это constant-expression); E должно быть постоянным выражением. Результат E можно наблюдать, вызвав std::meta::constant_of для отражения аннотации.
Аннотации всегда отличаются друг от друга, даже если их значения эквивалентны и они применяются к одному и тому же объявлению.
[[=42, =42]] int x; static_assert(std::meta::annotations_of(^^x).size() == 2); [[=42]] int f(); [[=24]] int f(); static_assert(std::meta::annotations_of(^^f).size() == 2);
Подстановка в аннотацию не является непосредственным контекстом.
Пример
См. также
|
(C++26) | получает аннотации, применённые к отражаемой сущности (функция) |
|
(C++26) | получает аннотации, применённые к отражаемой сущности и имеющие указанный тип (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/language/annotations