std::meta::object_of
来自cppreference.com
| 在标头 <meta> 定义
|
||
| |
(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() {}
参阅
(C++26) |
返回表示对象的反射,适合用作常量模板实参 (函数模板) |