为什么g ++ 5在自动类型推导中推导出对象而不是initializer_list

时间:2015-05-02 21:28:36

标签: c++ c++11 auto clang++ gcc5

我最近发现了这段代码:

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++ deduces the type of b as std::initializer_list<Foo>,而g++5.1 deduces as Foo AFAIK,类型确实应该(反直觉)std::initializer_list这里。为什么g ++ 5将类型推断为Foo

0 个答案:

没有答案