std::define_static_object
ja.cppreference.net より
| ヘッダ <meta>
|
||
template< class T >
consteval const remove_cvref_t<T>* define_static_object( T&& t );
|
で定義 (C++26 以上) | |
値を静的記憶域に昇格させます。
以下と同等:
using U = std::remove_cvref_t<T>;
if constexpr (std::meta::is_class_type(^^U) || std::meta::is_union_type(^^U))
{
std::meta::info obj = std::meta::reflect_constant(std::forward<T>(t));
return std::addressof(std::meta::extract<const U&>(obj));
}
else if constexpr (std::meta::is_array_type(^^U))
{
std::meta::info obj = std::meta::reflect_constant_array(std::forward<T>(t));
return std::addressof(std::meta::extract<const U&>(obj));
}
else
{
return std::define_static_array(std::span(std::addressof(t), 1)).data();
}
パラメータ
| t | - | 構造化型 |
の値
値 t を持つテンプレートパラメータオブジェクトへのポインタ。
注記
テンプレートパラメータオブジェクトとして、結果のオブジェクトは静的記憶域期間 を持ちます。 テンプレート引数等価 な値は同じオブジェクトに対応します。
結果のオブジェクトは、もし がスカラ型である場合、潜在的に非一意なオブジェクトstd::remove_cvref_t<T> です。
もし t がテンプレートパラメータオブジェクトである場合、結果は同じオブジェクトを指します。
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_define_static |
202506L |
(C++26) | std::define_static_object
|
例
| このセクションは不完全です 理由: 例がありません |
関連項目
(C++26) |
コンパイル時配列を静的記憶域に昇格させ、静的配列の span を返します (関数テンプレート) |
(C++26) |
コンパイル時文字列を静的記憶域に昇格させ、静的文字列の最初の文字へのポインタを返します (関数テンプレート) |
(C++26) |
値または テンプレートパラメータオブジェクト を表すリフレクションを返します。定数テンプレート引数として使用するのに適しています (関数テンプレート) |