Ale*_*ats 6 c++ templates constructor initializer-list
我正在尝试将std :: initializer_list接受到通用构造函数中,如下所示:
template<typename T>
class Test{
std::vector<T> V;
Test(std::initializer_list<T>& list) : V(list){}
};
Run Code Online (Sandbox Code Playgroud)
运用
Test<int> test{ 1, 2, 3, 4 };
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
error C2440: 'initializing' : cannot convert from 'initializer-list' to 'Test<int>' No constructor could take the source type, or constructor overload resolution was ambiguous
Run Code Online (Sandbox Code Playgroud)
我只是不确定我在这里做错了什么.
Test(std::initializer_list<T>& list) : V(list){}
Run Code Online (Sandbox Code Playgroud)
这采用std::initializer_list非常量引用,但随后您尝试将临时值绑定到它,这是非法的
std::initializer_list被设计为轻量级的,因此您可以按值传递它:
Test(std::initializer_list<T> list) : V(list){}
// ^ no &
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
289 次 |
| 最近记录: |