std::meta::object_of

来自cppreference.com
< cpp | meta
在标头 <meta> 定义
consteval std::meta::info object_of( std::meta::info r );
(C++26 起)

给定一个变量的反射,返回该变量所引用的对象的反射。

如果 r 表示一个对象,则返回 r

参数

r - 变量或静态对象的反射

返回值

r 所表示事物所引用的对象的反射。

异常

除非 r 表示以下之一,否则抛出 std::meta::exception

  • 具有静态存储期的对象;
  • 具有静态存储期的对象类型的变量;
  • 引用类型的变量,该变量指代具有静态存储期的对象,并且满足以下条件之一:
  • 该引用可在常量表达式中使用,或者
  • 该引用的生存期始于当前正在求值的核心常量表达式内部。

示例

可在 Compiler Explorer 上预览。

#include <meta>

int x;
int& y = x;

// x 和 y 是不同变量
static_assert(^^x != ^^y);
// x 和 y 指代相同对象
static_assert(std::meta::object_of(^^x) == std::meta::object_of(^^y));

int main() {}

参阅

返回表示对象的反射,适合用作常量模板实参
(函数模板) [编辑]