Namespaces
Variants

std::meta::type_of

来自 zh.cppreference.net
< cpp | meta
 
 
 
反射库
 
反射类型和查询
反射查询
反射布局查询
类型属性
类型属性查询
 
定义于头文件 <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)
检查反射是否表示一个类型
(函数)