为什么有一个构造函数同时接受initializer_list和一个参数包
Why is there a constructor accepting both initializer_list and a parameter pack
我注意到 std::optional
, std::variant
, std::any
都具有同时接受同时接受 std::initializer_list
和args...
的构造函数。
std ::可选CTOR(7)
std ::任何ctor(6)
std :: variant ctor(8)
为什么有这样的构造函数?它支持什么用例?
好吧,这是一个愚蠢的问题。
感谢大家帮助我编辑问题。
同时使用initializer_list和参数包。
例如,std :: vector具有一个构造函数接受initializer_list和分配器。
我测试了,这似乎是答案。
std::variant<std::vector<int,std::allocator<int>>> v(std::in_place_index<0>,{1,2,3,4},std::allocator<int>());
for(int i: std::get<0>(v))
{
std::cout<<i<<std::endl;
}
还有另一个问题,为什么必须将initializer_list与其他模板参数特别分开。我想我可以在其他地方找到它。
相关文章:
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何制作一个将函数作为参数的类方法
- 修改函数中的指针(将另一个指针作为参数传递)
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 构造函数在退出函数时无法初始化一个参数
- 在C++中声明一个函数时,它需要有函数本身的参数吗
- visual是否可以在c++中创建一个接收无限数量相同类型(或至少相当数量)参数的函数
- 如何将一个类的函数作为另一个类的另一个函数的参数传递
- 表达式 SFINAE:如何根据类型是否包含具有一个或多个参数的函数来选择模板版本
- C++重载函数,一个采用基类的参数,另一个采用派生类的参数
- 运算符重载:"operator+"必须采用零个或一个参数
- 是否可以在C++中有一个"generic"模板参数,该参数可以是非类型模板参数或类型?
- 如果需要转换,我可以在读取参数的同时将其移动到另一个参数吗?
- 如何在另一个函数中使用返回值作为参数?
- 如果模板参数是另一个模板的实例化,则键入特征测试
- 将参数一个接一个地传递,或通过将它们包裹在数组,结构或元组中
- 如何给一个参数一个由其他参数的函数确定的默认值
- C++如何给一个参数一个特定的枚举,它可以是
- 如果我在默认构造函数中放了一个参数,但给了这个参数一个默认值,它还是一个默认构造函数吗
- 为什么在c++中给typename模板参数一个默认值0 ?