std::meta::type_of
来自 zh.cppreference.net
| 定义于头文件 <meta>
|
||
consteval std::meta::info type_of( std::meta::info r );
|
(自 C++26 起) | |
返回表示 r 所指内容的类型的反射。
正式而言:
- 若
r表示一个函数形参(参见 std::meta::parameters_of),则返回该函数形参类型列表中相应类型的反射。 - 若
r表示一个值、对象、变量、函数、非静态数据成员或无名位域,则返回r所指内容的类型的反射。 - 若
r表示一个注解,则返回std::meta::type_of(std::meta::constant_of(r))。 - 若
r表示枚举类型 E 的枚举项:
- 若在
type_ofE 的定义之后调用 ,则返回 E 的反射; - 否则(在
type_ofE 的定义内调用 ),则返回一个整数类型(即在枚举定义中枚举项的类型)的反射。
- 若在
- 若
r表示一个直接基类关系(即std::meta::bases_of(x, ctx)的一个元素),则返回该关系中基类的反射。 - 若
r表示一个数据成员描述(即 std::meta::data_member_spec 返回的值),则返回该描述中的类型的反射。
参数
| r | - | 一个表示具有类型的某物的反射 |
返回值
r 所指内容的类型。
异常
若 std::meta::exception 所表示的内容不具有类型,则抛出 r。即 r 必须表示以下之一:
- 值
- 注解
- 对象
- 变量
- 类型不含未推导占位类型且非构造函数或析构函数的函数
- 枚举项
- 非静态数据成员
- 无名位域
- 直接基类关系
- 数据成员描述
- 函数形参
示例
| 本节未完成 原因:尚无示例 |
参阅
(C++26) |
检查反射是否表示一个类型 (函数) |