C++0x initializer_listとコンストラクタ
以下の場合、どちらのコンストラクタが呼ばれるべきか仕様上明確ではありませんでした。
struct A { A(std::initializer_list<int>); A(); }; A a = {}; // どちらのコンストラクタが呼ばれる?
N3090のWorking Draftからこれらが明確に規定され、以下のようになります。
struct A { A(std::initializer_list<int>); // #1 A(); // #2 }; A a1 = {1, 2, 3}; // #1が呼ばれる A a2 = {}; // #2が呼ばれる
Core Issue 990 Value initialization with multiple initializer-list constructors
N3079 Redrafting: issues 667, 861, 990, 818