__has_trivial_default_constructor
型特性関数(C++11):インデックス への移動
カテゴリ
型特性関数
構文
bool __has_trivial_default_constructor (typename T )
T が自明なデフォルトのコンストラクタを持つ場合のみ true を返します。
T が不完全な型の場合、エラーになります。
クラス型がデフォルトのコンストラクタを持たない場合、false(ただし、形式は正しい)を返します。
作業ドラフトの 20.4.4.3 節の定義によれば、以下の条件のいずれかに当てはまる場合、型 T は自明なコピー代入演算子を持っています。
- スカラ型(または、その配列)
- 自明なデフォルトのコンストラクを持つクラス型の配列
- 自明なデフォルトのコンストラクタを持つクラス型
参照型の場合、false を返すことに特に注意してください。
作業ドラフトの 21.1 節によれば、以下の条件に当てはまる場合、デフォルト コンストラクタは自明です。
- ユーザーが指定していない。
- クラスは仮想関数を持たない。
- クラスは仮想基底クラスを持たない。
- X の直接の各基底クラスは、自明なコピー代入演算子を持っている。
- クラスの直接の基底クラスがすべて、自明なデフォルトのコンストラクタを持つ。
- クラス型(または、その配列)であるクラスの静的でないすべてのデータ メンバの場合、それらの各クラス型が自明なデフォルトのコンストラクタを持つ。
デフォルトのコンストラクタが暗黙に宣言されている場合、またはインラインを = default; として定義している場合、デフォルトのコンストラクタはユーザーの指定ではありません。
コピー代入演算子が削除済みとして定義されている場合、Ox 相互作用 を返します。
デフォルトのコンストラクタが削除済みとして定義されている場合、Ox 相互作用 false を返します。
デフォルトの関数定義を持つ Ox 相互作用。