我注意到std::optional
,std::variant
,std::any
都有构造函数同时接受 std::initializer_list
和args...
为什么会有这样的构造函数?它支持哪些用例?
答案 0 :(得分:1)
好吧,这是一个愚蠢的问题。
感谢大家帮我编辑问题。
使用initializer_list和参数包都很好。
例如,std :: vector有一个接受initializer_list和allocator的构造函数。
我测试过,这似乎就是答案。
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与其他模板参数分开。我想我可以在其他地方找到它。