Namespaces
Variants

std::meta::标识符_of, std::meta::u8标识符_of

来自 zh.cppreference.net
< cpp | meta
 
 
 
反射库
 
反射类型和查询
反射查询
反射布局查询
类型属性
类型属性查询
 
定义于头文件 <meta>
consteval std::string_view identifier_of( std::meta::info r );
(1) (C++26 起)
consteval std::u8string_view u8identifier_of( std::meta::info r );
(2) (C++26 起)

返回与 r 所表示的内容关联的标识符。

1) 结果是以普通字面量编码的字符串。
2) 结果是 UTF-8 字符串。

结果字符串确定如下:

  • 如果 r 表示一个具有 用于链接目的的 typedef 名称的实体,则返回该名称。
  • 否则,如果 r 表示一个 字面量运算符或字面量运算符模板,则返回其字面量后缀标识符。
  • 否则,如果 r 表示一个函数 P 的F函数参数,则令 S 为从求值上下文中某个点可达的一组声明(忽略任何显式实例化),这些声明声明了 F 或 F 所特化的一种模板函数,返回 S 中一个声明为与 P 对应的参数引入的名称。
  • 否则,如果 r 表示一个实体,返回其声明的名称。
  • 否则,如果 r 表示一个 直接基类关系,返回 std::meta::identifier_of(std::meta::type_of(r)) 或 std::meta::u8identifier_of(std::meta::type_of(r))。
  • 否则,如果 r 表示一个 数据成员描述 (T, N, A, W, NUA, ANN),返回该描述的名称 N。

参数

r - 一个反射值

返回值

r 所表示内容的标识符,如上所述。

异常

抛出 std::meta::exception,除非 std::meta::has_identifier(r) 是 true 且结果字符串可在对应编码中表示。

注解

结果 V 以空字符结尾:V.data()[V.size()] 保证为 '\0'。V 中的每个元素是一个可能非唯一的具有静态存储期限的对象,可在常量表达式中使用;指向此类元素的指针不适合用作指针类型的非类型模板参数的模板实参。

示例

参阅

检查反射是否表示一个具有标识符的实体
(函数)