std:: is_implicit_lifetime
| Type traits | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time rational arithmetic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time integer sequences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(C++14)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ヘッダーで定義
<type_traits>
|
||
|
template
<
class
T
>
struct is_implicit_lifetime ; |
(C++23以降) | |
std::is_implicit_lifetime
は
UnaryTypeTrait
です。
T
が
implicit-lifetime type
である場合、メンバー定数
value
を
true
に設定します。それ以外の型の場合、
value
は
false
となります。
T が配列型または(possibly cv-qualified) void 以外の不完全型である場合、動作は未定義です。
プログラムが
std::is_implicit_lifetime
または
std::is_implicit_lifetime_v
に対する特殊化を追加する場合、動作は未定義です。
目次 |
テンプレートパラメータ
| T | - | チェックする型 |
ヘルパー変数テンプレート
|
template
<
class
T
>
constexpr bool is_implicit_lifetime_v = is_implicit_lifetime < T > :: value ; |
(C++23以降) | |
std:: integral_constant から継承
メンバ定数
|
value
[static]
|
true
(
T
がimplicit-lifetime型の場合)、
false
(それ以外の場合)
(public static member constant) |
メンバ関数
|
operator bool
|
オブジェクトを
bool
に変換し、
value
を返す
(public member function) |
|
operator()
(C++14)
|
value
を返す
(public member function) |
メンバ型
| 型 | 定義 |
value_type
|
bool |
type
|
std:: integral_constant < bool , value > |
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_is_implicit_lifetime
|
202302L
|
(C++23) |
std::is_implicit_lifetime
|
例
// 以下の型は暗黙的生存期間型と総称される: // * スカラ型: // * 算術型 // * 列挙型 // * ポインタ型 // * メンバポインタ型 // * std::nullptr_t // * 暗黙的生存期間クラス型 // * デストラクタがユーザー提供でない集成体 // * 少なくとも1つの自明な適格コンストラクタと、自明で非削除されたデストラクタを持つ // * 配列型 // * これらの型のCV修飾版 #include <type_traits> static_assert(std::is_implicit_lifetime_v<int>); // 算術型はスカラ型 static_assert(std::is_implicit_lifetime_v<const int>); // CV修飾されたスカラ型 enum E { e }; static_assert(std::is_implicit_lifetime_v<E>); // 列挙型はスカラ型 static_assert(std::is_implicit_lifetime_v<int*>); // ポインタ型はスカラ型 static_assert(std::is_implicit_lifetime_v<std::nullptr_t>); // スカラ型 struct S { int x, y; }; // Sは暗黙的生存期間クラス: ユーザー提供デストラクタのない集成体 static_assert(std::is_implicit_lifetime_v<S>); static_assert(std::is_implicit_lifetime_v<int S::*>); // メンバポインタ struct X { ~X() = delete; }; // Xは削除されたデストラクタのため暗黙的生存期間クラスではない static_assert(!std::is_implicit_lifetime_v<X>); static_assert(std::is_implicit_lifetime_v<int[8]>); // 配列型 static_assert(std::is_implicit_lifetime_v<volatile int[8]>); // CV修飾された配列型 int main() {}
関連項目
|
(C++11)
|
型がスカラ型かどうかをチェックする
(クラステンプレート) |
|
(C++11)
|
型が配列型かどうかをチェックする
(クラステンプレート) |
|
(C++17)
|
型が集成体型かどうかをチェックする
(クラステンプレート) |
|
指定されたストレージ内でオブジェクト表現を再利用してオブジェクトを暗黙的に作成する
(関数テンプレート) |