Spec-Zone.ru › C++

Аннотации (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);

Подстановка в аннотацию не является непосредственным контекстом.

Пример

См. также

annotations_of
(C++26)
получает аннотации, применённые к отражаемой сущности
(функция)
annotations_of_with_type
(C++26)
получает аннотации, применённые к отражаемой сущности и имеющие указанный тип
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/language/annotations

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API