読者です 読者をやめる 読者になる 読者になる

C++0x initializer_listとコンストラクタ

C++

以下の場合、どちらのコンストラクタが呼ばれるべきか仕様上明確ではありませんでした。

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