-3
我注意到std::optional
,std::variant
,std::any
都有構造接受都在同一時間std::initializer_list
和args...
。爲什麼有一個構造函數接受兩個initializer_list和參數包
爲什麼會出現這樣的構造?它支持什麼用例?
我注意到std::optional
,std::variant
,std::any
都有構造接受都在同一時間std::initializer_list
和args...
。爲什麼有一個構造函數接受兩個initializer_list和參數包
爲什麼會出現這樣的構造?它支持什麼用例?
好的,這是一個愚蠢的問題。
感謝大家幫我編輯問題。
可以同時使用initializer_list和parameter pack。
例如,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必須與其他模板參數特別分離。我想我可以在別的地方找到它。
您鏈接的頁面有一個示例。 – chris
我想你是在談論std :: optional的例子嗎? //調用std :: string(initializer_list)構造函數 std ::可選 o4(std :: in_place,{'a','b','c'});當然,沒關係。但我想知道爲什麼在initializer_list之後有一個「參數...」。我的意思是,只是參數..沒問題,只是initializer_list可以,爲什麼呢? –
ZhangFengze
「*爲什麼兩個*」與「*如何使用它*」不是同一個問題,它有一個明顯的答案。我建議你改述問你實際上想知道什麼。 – StoryTeller