std::meta::type_of

来自cppreference.com
< 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  的枚举项:
  • 如果在 E  的定义之后调用 type_of,则返回 E  的反射;
  • 否则(在 E  的定义内部调用 type_of),则返回整数类型的反射(该类型是枚举项在枚举定义内部的类型)。
  • 如果 r 表示直接基类关系(即 std::meta::bases_of(x, ctx) 中的元素),则返回该关系中基类的反射。
  • 如果 r 表示数据成员描述(即 std::meta::data_member_spec 返回的值),则返回该描述中类型的反射。

参数

r - 某事物的反射,该事物具有类型

返回值

r 所表示事物的类型。

异常

除非 r 所表示的事物具有类型,否则抛出 std::meta::exception。也就是说,r 必须表示以下之一:

  • 标注
  • 对象
  • 变量
  • 函数(其类型不包含未推导的占位符类型,且该函数不是构造函数或析构函数)
  • 枚举项
  • 非静态数据成员
  • 无名位域
  • 直接基类关系
  • 数据成员描述
  • 函数形参

示例

参阅