C++2a(C++20)で導入予定のDesignated Initialization(指示付きの初期化)ついてメモ。C99での同一言語機能をベースとするが、一部機能制限された形でC++に導入される。 // C++2a(C++20) struct Point { int x, y; }; void f(Point); f({ .x = 100, .y = 50 }); // OK: Designated Initialization // 指示子順==メンバ宣言順 が条件 f({ .y = 50, .x = 100 }); // NG C++2a言語機能とC99言語機能との差異は下表の通り(P0329R0より引用)。特に初期化子順序をデータメンバ宣言順と一致させる必要がある点に注意。関数呼び出しの名前付きパラメータ(named parameter)的な利用方法には使いづらそう。 C++2a