aggregate typeの、comma初期化可能条件

まず、agglegate typesっていうのは、構造体(class)や、共用体や、配列で、以下のような条件を満たすもの。

  • コンストラクタがない
  • ノンパブリックなメンバ変数がない
  • 基底クラスがない
  • 仮想関数がない

このようなタイプに対しては、コンマで区切られたリストを使っての初期化ができます。

例:

struct Hoge{
	int x, y, z;
};

struct Piyo{
	Piyo(){}
	int x, y, z;
};

int main(){
	Hoge h = {1, 2, 3};//OK
	Piyo p = {1, 2, 3};//コンパイルエラー
	return 0;
}