茂加部珈琲店

主にtech関連のメモ置き場です

c++17のaggregate initialization

c++では、十分に「しょぼい」クラスに対して、aggregate initializationが使えるみたいです。
aggregate initializationはリスト初期化の一種で、
色々できることがありますが、例をあげると

struct Foo {
  int i;
  float f;
};

というクラスは、

  Foo f = { 4, 2. };

のようにして初期化できます。便利ですね。 c++17からは、これが更に拡張されるみたいです

例えば、

struct Header {
  long l;
};

struct Foo : Header {
  int i;
};

このいかにもC言語風の構造体は、

  Foo f = { {4}, 2 };

もしくは

  Foo f = { 4, 2 };

のように初期化できます。良いですね!