std::meta::has_static_storage_duration, std::meta::has_thread_storage_duration, std::meta::has_automatic_storage_duration

来自cppreference.com
< cpp | meta
在标头 <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 是否表示具有指定存储期的对象或变量。

1) 如果 r 表示具有静态存储期的对象或变量,则返回 true;否则返回 false
2) 如果 r 表示具有线程存储期的变量,则返回 true;否则返回 false
3) 如果 r 表示具有自动存储期的变量,则返回 true;否则返回 false

参数

r - 一个反射值

返回值

如果 r 所表示的内容具有指定的存储期,则为 true;否则为 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));
}

参阅

检查所反射实体是否具有链接
(函数) [编辑]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.