Аннотации (начиная с C++26)
Прикреплять информацию к объявлениям так, чтобы рефлексия могла её наблюдать.
Синтаксис
Список аннотаций вводится в спецификаторе атрибута. Каждая аннотация начинается с =.
= константное выражение
|
|||||||||
Объяснение
Аннотация может быть применена к любому объявлению типа, псевдонима типа, переменной, функции, параметру функции не типа void, пространства имён, перечислителя, спецификатора базового класса или нестатическому элементу данных.
Пусть E равно std::meta::reflect_constant(expr) (где expr — это константное выражение), 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) |
получает аннотации, которые применяются к отражённой сущности и имеют указанный тип (функция) |