C++ 名前付き要件: DefaultConstructible
From cppreference.com
この型はデフォルト構築可能であることを指定します。
目次 |
[編集] 要件
型 T が、以下のすべてのステートメントおよび式が有効であり、指定された効果を持つ場合、DefaultConstructible を満たす。
| 式/ステートメント | 事後条件 |
|---|---|
| T u; | オブジェクト u は デフォルト初期化 される。 |
| T u{}; | オブジェクト u は 値初期化 または 集約初期化 される。 |
| T()
T{} |
型 T の一時オブジェクトは 値初期化 または 集約初期化 される。 |
[編集] 注意
非集約クラス型のオブジェクトの場合、DefaultConstructible を満たすには、パブリックな デフォルトコンストラクタ が定義されている(ユーザー定義または暗黙定義)必要がある。
非クラスオブジェクト型の非 const オブジェクトは、常に DefaultConstructible である。
const 非クラス型は DefaultConstructible ではない。
const 集約型は、そのメンバのいずれかが非クラス型のオブジェクトである場合、DefaultConstructible ではない。
非オブジェクト型(関数型、参照型、および(cv 修飾されている可能性のある)型 void)および const 非オブジェクト型は、決して DefaultConstructible ではない。
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 724 | C++98 | DefaultConstructible の要件が欠落していた。 | 追加された |
| LWG 2170 | C++98 | DefaultConstructible 型のオブジェクトを 空の初期化子で初期化すると、値初期化にしかならなかった。 |
は、~にもつながる可能性がある。 集約初期化 |
[編集] 関連項目
| 型がデフォルトコンストラクタを持つかをチェックする (クラステンプレート) | |
| (C++20) |
その型のオブジェクトがデフォルト構築可能であることを規定する (コンセプト) |