Почему 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?

Ответы на вопрос(1)

Ваш ответ на вопрос