Namespaces
Variants

注解 (C++26 起)

来自 zh.cppreference.net
 
 
C++ 语言
通用主题
流程控制
条件执行语句
if
迭代语句(循环)
for
范围 forfor (C++11)
跳转语句
函数
函数声明
Lambda 函数表达式
inline noexcept 说明符
动态异常说明 (*C++17 前*)
noexcept noexcept 运算符 (C++11)
异常
命名空间
类型
说明符
constdecltypevolatile
/ decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
存储期说明符
初始化
表达式
替代表示
字面量
布尔 - 整数 - 浮点
字符 - 字符串 - nullptr (C++11)
用户定义 (C++11)
工具
属性 (C++11)
类型
typedef typedef 声明
类型别名声明 (C++11)
类型转换
内存分配
类
类特定函数属性
explicit (C++11)
static

特殊成员函数
模板
杂项
 

以反射可观察的方式将信息附加到声明上。

语法

注解列表在属性说明符中引入。每个注解以 = 开头。

= 常量表达式

解释

注解可应用于任何类型、类型别名、变量、函数、非 void 类型的函数参数、命名空间、枚举项、基类说明符或非静态数据成员的声明。

令 E 为 std::meta::reflect_constant(expr)(其中 expr 为 常量表达式),E 必须为常量表达式。通过调用 Estd::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);

替换到注解中不是立即上下文。

示例

参阅

获取应用于被反射实体的注解
(函数)
获取应用于被反射实体且具有指定类型的注解
(函数)