Warum leitet g ++ 5 das Objekt anstelle von initializer_list bei der automatischen Typableitung ab

Ich bin kürzlich auf diesen Code gestoßen:

struct Foo{};

int main() 
{
    Foo a;
    // clang++ deduces std::initializer_list
    // g++5.1 deduces Foo
    auto b{a}; 
    a = b;
}

It kompiliert einwandfrei mit g ++ 5.1, schlägt jedoch in clang ++ fehl (verwendet beide-std=c++11 und-std=c++14, gleiche Ergebnisse). Der Grund ist, dass clang ++ leitet den Typ von @ b wiestd::initializer_list<Foo>, wohingegeng++5.1 ergibt sich alsFoo. AFAIK, der Typ sollte tatsächlich (kontraintuitiv) seinstd::initializer_list Hie. Warum leitet g ++ 5 den Typ als @ aFoo?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage