C++ named requirements: DefaultConstructible
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
その型のインスタンスがデフォルト構築可能であることを指定します。
目次 |
要件
型
T
は、以下のすべての文と式が有効であり、指定された効果を持つ場合、
DefaultConstructible
を満たします:
| 式/文 | 事後条件 |
|---|---|
| T u ; | オブジェクト u は デフォルト初期化 される。 |
| T u { } ; | オブジェクト u は 値初期化 または 集成体初期化 される。 |
|
T
(
)
T { } |
型
T
の一時オブジェクトは
値初期化
または
集成体初期化
される。
|
注記
非集成クラス型のオブジェクトの場合、 default constructor が(ユーザー定義または暗黙的に定義された)publicで定義されている必要があり、これによって DefaultConstructible の要件を満たします。
非クラスオブジェクト型の 非constオブジェクト は常に DefaultConstructible です。
const非クラス型は DefaultConstructible ではありません。
const集約型は、そのメンバーのいずれかが非クラス型のオブジェクトである場合、 DefaultConstructible ではありません。
非オブジェクト型(関数型、参照型、および(CV修飾可能性のある)型 void )ならびにconst非オブジェクト型は、決して DefaultConstructible にはなりません。
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 724 | C++98 | DefaultConstructible の要件が欠落していた | 追加された |
| LWG 2170 | C++98 |
DefaultConstructible
型のオブジェクトを空の初期化子で
初期化すると値初期化のみが行われた |
集成体初期化も
行われる可能性がある |
関連項目
|
(C++11)
(C++11)
(C++11)
|
型がデフォルトコンストラクタを持つかチェックする
(クラステンプレート) |
|
(C++20)
|
型のオブジェクトがデフォルト構築可能であることを指定する
(コンセプト) |