Namespaces
Variants

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

ja.cppreference.net より
< 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) true は、r が静的記憶域期間を持つオブジェクトまたは変数を表す場合に false を返します。そうでない場合は
を返します。2)true r がスレッド記憶域期間を持つ変数を表す場合に false を返します。そうでない場合は
を返します。3)true r が自動記憶域期間を持つ変数を表す場合に false を返します。そうでない場合は

関連項目

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));
}

関連項目

反映されたエンティティがリンケージ
を持つかどうかを調べる
(関数)