std::meta::has_static_storage_duration, std::meta::has_thread_storage_duration, std::meta::has_automatic_storage_duration
ja.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));
}
関連項目
| 反映されたエンティティがリンケージ を持つかどうかを調べる |