std::meta::has_static_storage_duration, std::meta::has_thread_storage_duration, std::meta::has_automatic_storage_duration
来自 zh.cppreference.net
| 定义于头文件 <meta>
|
||
consteval bool has_static_storage_duration( std::meta::info r );
|
(1) | (C++26 起) |
consteval bool has_thread_storage_duration( std::meta::info r );
|
(2) | (C++26 起) |
consteval bool has_automatic_storage_duration( std::meta::info r );
|
(3) | (C++26 起) |
判断 r 是否代表具有指定存储期的对象或变量。
参数
| r | - | 一个反射值 |
返回值
true如果 r 所代表的对象或变量具有指定的存储期,则返回 false;否则返回
。
注解r如果 false 不代表对象或变量,则结果为
。
示例可在 Compiler Explorer
上预览。
#include <meta>
int a;
static_assert(std::meta::has_static_storage_duration(^^a));
static_assert(!std::meta::has_thread_storage_duration(^^a));
static_assert(!std::meta::has_automatic_storage_duration(^^a));
thread_local int b;
static_assert(!std::meta::has_static_storage_duration(^^b));
static_assert(std::meta::has_thread_storage_duration(^^b));
static_assert(!std::meta::has_automatic_storage_duration(^^b));
int main()
{
[[maybe_unused]] int c;
static_assert(!std::meta::has_static_storage_duration(^^c));
static_assert(!std::meta::has_thread_storage_duration(^^c));
static_assert(std::meta::has_automatic_storage_duration(^^c));
}
运行此代码
| (C++26)检查反射的实体是否具有 链接 |