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
:T1
V2
: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));
}
xxxxxxxxxx
#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));
}
出力