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
?