为什么在这种情况下可以扣除std :: initializer_list的类型?

时间:2017-05-21 15:15:57

标签: c++ templates standards c++17 type-deduction

template<typename T>
void f(T)
{}

int main()
{
    auto coll = { 1, 2, 3 };
    f(coll); // ok
    f({ 1, 2, 3 }); // error
}

我的编译器是clang 5.0

错误消息如下:

  

f({1,2,3}); //错误:没有匹配函数来调用&#39; f&#39;

     

注意:候选模板被忽略:无法推断模板参数&#39; T&#39;

为什么f(coll)还可以,但f({ 1, 2, 3 })不是?

0 个答案:

没有答案