Namespaces
Variants

Аннотации (начиная с C++26)

С сайта ru.cppreference.net
 
 
Язык C++
Общие темы
Управление потоком
Условные операторы
if
Операторы итерации (циклы)
for
range-for (C++11)
Операторы перехода
Функции
Объявление функции
Лямбда-выражение
inline спецификатор
Динамические спецификации исключений (до C++17*)
noexcept спецификатор (C++11)
Исключения
Пространства имён
Типы
Спецификаторы
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Спецификаторы времени хранения
Инициализация
Выражения
Альтернативные представления
Литералы
Логические - Целочисленные - С плавающей точкой
Символьные - Строковые - nullptr (C++11)
Пользовательские (C++11)
Утилиты
Атрибуты (C++11)
Типы
typedef объявление
Объявление псевдонима типа (C++11)
Приведения
Выделение памяти
Классы
Свойства функций, специфичные для класса
explicit (C++11)
static

Специальные функции-члены
Шаблоны
Разное
 

Прикреплять информацию к объявлениям так, чтобы рефлексия могла её наблюдать.

Синтаксис

Список аннотаций вводится в спецификаторе атрибута. Каждая аннотация начинается с =.

= константное выражение

Объяснение

Аннотация может быть применена к любому объявлению типа, псевдонима типа, переменной, функции, параметру функции не типа 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);

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

Пример

Смотри также

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