後者を使用することに欠点はありますか?より用途がstd::make_pair
広い/互換性がありますか、それとも本当に互換性がありますか?
ありがとう!
後者を使用することに欠点はありますか?より用途がstd::make_pair
広い/互換性がありますか、それとも本当に互換性がありますか?
ありがとう!
それらはどのように関連していますか?pair
初期化子リストコンストラクターは、が異種型であるため、ペアでは機能しませんが、初期化子リストコンストラクターはinitializer_list<T>
、同種型の初期化子リストを取得するためにのみ使用できる、を使用します。
(仕様を見ると、実際には「初期化リストコンストラクター」ではなく「初期化子リストコンストラクター」と呼ばれる必要があります。本当に最初のコンストラクターを参照するつもりですか?そうでない場合は、何を参照しますか?)
std::pair<>
を使用して使用するのではなく、初期化子リストを使用して初期std::make_pair
化することを参照するだけであればauto
、どちらも問題ないと思います。
auto p = std::make_pair(a, b);
std::pair<A, B> p{a, b};
すでに型がA
ありB
、それらをに使用できる場合はpair
、初期化子リストを使用するのが良い方法です。そうでない場合は、それmake_pair
は良いことかもしれません。型A
とB
があり、それらがすでに適切に変換されているかどうかわからない場合(つまり、配列型や関数型であってはならず、おそらく非参照型にする必要がある場合)、使用する方が簡単な場合がありますstd::make_pair
。これにより、式の型が適切に減衰します。