namespace std {
template <class T1, class T2>
pair<V1, V2> make_pair(T1, T2); // C++03
template <class T1, class T2>
pair<V1, V2> make_pair(T1&& x, T2&& y); // C++11
template <class T1, class T2>
constexpr pair<V1, V2> make_pair(T1&& x, T2&& y); // C++14
}
概要
pairクラスのオブジェクトを構築する。
結果型のV1およびV2は以下のような型となる:
- C++03 :
V1:T1V2:T2
- C++11 :
T1とT2それぞれの型Tにおいて、std::decay<T>::typeの結果型を使用し、- かつ型
Tがstd::reference_wrapper型であった場合T&型を使用する
- C++20 :
T1とT2それぞれの型Tにおいて、std::unwrap_ref_decay_t<T>を適用した型
戻り値
std::pair<V1, V2>(std::forward<T1>(x), std::forward<T2>(y));
例
#include <utility>
#include <functional>
int main()
{
std::pair<int, char> p1 = std::make_pair(1, 'a');
int ar[3] = {1, 2, 3};
char c = 'b';
// 配列はT*となり、reference_wrapper<T>はT&となる。
std::pair<int*, char&> p2 = std::make_pair(ar, std::ref(c));
}
出力