std::default_initializable
From cppreference.com
| ヘッダ <concepts> で定義 |
||
| template< class T > concept default_initializable = std::constructible_from<T> && requires { T{}; } && |
(C++20以降) | |
default_initializableコンセプトは、型Tの変数が以下の方法で
- 値初期化(つまり、T()が適格であるか)できるか、
- 空の初期化子リストから直接リスト初期化(つまり、T{}が適格であるか)できるか、
- デフォルト初期化(つまり、T t;が適格であるか)できるかを検査します。
アクセス検査は、Tとは無関係なコンテキストで行われたかのように実行されます。変数の初期化の直接的なコンテキストの有効性のみが考慮されます。
[編集] 実装例
template<class T> concept default_initializable = std::constructible_from<T> && requires { T{}; ::new T; }; |
[編集] 参照
- C++23標準 (ISO/IEC 14882:2024)
- 18.4.12 Concept
default_initializable[concept.default.init]
- 18.4.12 Concept
- C++20 standard (ISO/IEC 14882:2020)
- 18.4.12 Concept
default_initializable[concept.default.init]
- 18.4.12 Concept
[編集] 関連項目
| (C++20) |
その型の変数が、一連の引数型から構築可能、または束縛可能であることを規定する (コンセプト) |
| 型がデフォルトコンストラクタを持つかをチェックする (クラステンプレート) |