- utility[meta header]
- std[meta namespace]
- function template[meta id-type]
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));
}- std::make_pair[color ff0000]
- std::ref[link /reference/functional/ref.md]