为什么有一个构造函数同时接受initializer_list和一个参数包



我注意到 std::optionalstd::variantstd::any都具有同时接受同时接受 std::initializer_listargs...的构造函数。

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与其他模板参数特别分开。我想我可以在其他地方找到它。

最新更新