2016-07-18 4 views
2

制服の初期化は、Apple LLVMのバージョン7.3.0に次のエラーを私に以下のメンバーを初期化初期化サンプル:均一な初期化は、メンバーがで、構造体が含まれ、構造体のインスタンスの

struct Foo 
{ 
    int foo1 = 0; 
    int foo2; 
}; 


int main() 
{ 
    Foo foo{0, 1}; 
} 

構造体の初期化は、イニシャライザリスト構造体コンストラクタの生成を抑制すると思われます。どうして?

+0

FYI:「初期化子リスト構造体のコンストラクタ」のようなものはありません。凝集体を '{}'印加する初期化リストを使用していません。それは単純にCのように、[集合初期化](http://en.cppreference.com/w/cpp/language/aggregate_initialization)を行います –

答えて

4

あなたは、コンストラクタの面でdefault member initializersを定義するC++ 11、下コンパイルしているため。つまり、暗黙的にコンストラクターを作成します。したがって、型はもはや集合体ではありません。

C++ 14には、デフォルトのメンバー初期化子を持つように凝集体を許せば、これを撤回しました。集合体は、代替メンバーを提供する場合、デフォルトのメンバー初期化子をオーバーライドします。

関連する問題