2016-12-08 6 views
0

std::optional所有するオブジェクトのコンストラクタに引数を転送コンストラクタ提供:initializer_listの場合に転送コンストラクタをオーバーロードするのはなぜですか?

template<class...Args> 
optional(in_place_t,Args&&...args) 

をしかし、それはまた、このオーバーロードを提供します。

template<class U,class...Args> 
optional(in_place_t,initializer_list<U> l,Args&&...args) 

この最後の過負荷のメリットは何ですか?

+0

閉鎖については申し訳ありません。私はあなたが何か違うものを求めていると思った。 –

答えて

4

それはあなたがこれを行うことができるようにです:

よりもはるかに短いです
optional<vector<int>> o(in_place_t, {1, 2, 3, 4, 5}); 

optional<vector<int>> o(in_place_t, std::initializer_list<int>{1, 2, 3, 4, 5}); 
関連する問題