C 11 非静的メンバー初期化子を持つクラスの集合体の初期化
C 11 では、ユーザー定義のコンストラクターとプライベートを持つ構造体とクラスまたは保護された非静的データ メンバーは集計とみなされません。これまでは、ユーザー定義のコンストラクターが欠けていたとしても、非静的メンバー初期化子を持つクラスにも当てはまりました。
しかし、C 14 では、この制限は削除されました。現在、非静的メンバー初期化子を持つクラスは、集約の他の要件を満たしている限り、引き続き集約することができます。
例:
struct A { int a = 3; int b = 3; }; int main() { A a{0, 1}; // This is now allowed in C++14 return 0; }
この変更は、集合体初期化の動作を直感に合わせたいという要望によって動機付けられました。クラス内初期化子は本質的にユーザー定義のコンストラクターと同等ですが、クラスが集合体になることを妨げるのは直観に反します。
G 5.0 以降、非静的データ メンバー初期化子を持つ C 14 集合体は、 std=c 1y または -std=c 14 を使用してサポートされます。
以上が非静的メンバー初期化子を持つクラスは C 14 で集約できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。