无法通过隐式支撑初始化推导出模板参数

时间:2016-08-01 22:00:53

标签: c++ c++11 initializer-list

有谁知道为什么调用func的第三种方式不起作用?

template <typename T>
struct Foo
{
   Foo(T t) {  }
};

template <typename T>
void func(const Foo<T>& f)
{  }

int main(int argc, char *argv[])
{
   func<int>(42);       // works
   func(Foo<int>{42});  // explicit braced initialization works
   func({42});          // implicit braced initialization, doesn't work
   return 0;
}

理想情况下,{42}可以是std::initializer_list<int>,也可以是可以采用int值的某种类型。编译器是否应该能够查看所调用的内容,预期内容以及是否可以进行此类转换?

0 个答案:

没有答案