我正在尝试将std::initializer_list接受到泛型构造函数中,如下所示:
template<typename T>
class Test{
std::vector<T> V;
Test(std::initializer_list<T>& list) : V(list){}
};使用
Test<int> test{ 1, 2, 3, 4 };但我知道错误是:
error C2440: 'initializing' : cannot convert from 'initializer-list' to 'Test<int>' No constructor could take the source type, or constructor overload resolution was ambiguous我只是不知道我做错了什么。
发布于 2015-11-19 15:36:20
Test(std::initializer_list<T>& list) : V(list){}这将通过非const引用获取std::initializer_list,但随后尝试将一个临时引用绑定到它,这是非法的。
std::initializer_list设计为轻量级,因此您只需按值传递它:
Test(std::initializer_list<T> list) : V(list){}
// ^ no &https://stackoverflow.com/questions/33808064
复制相似问题