Почему g ++ 5 выводит объект вместо initializer_list при автоматическом выводе типа
Я недавно наткнулся на этот код:
struct Foo{};
int main()
{
Foo a;
// clang++ deduces std::initializer_list
// g++5.1 deduces Foo
auto b{a};
a = b;
}
Он прекрасно компилируется с g ++ 5.1, но не работает в clang ++ (используется оба-std=c++11
а также-std=c++14
, те же результаты). Причина в том, чтоClang ++ выводит типb
какstd::initializer_list<Foo>
, в то время какg++5.1
выводит какFoo
. AFAIK, тип действительно должен быть (действительно нелогичным)std::initializer_list
Вот, Почему g ++ 5 выводит тип какFoo
?