最終更新日時: 2025年07月09日 00時33分39秒 (JST)
Akira Takahashi が更新

履歴 編集

function template
<utility>

# std::make_pair

    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));
    }

### 出力

## 参照

- N2244 Wording for `decay`, `make_pair` and `make_tuple`
- N3471 Constexpr Library Additions: utilities, v3
- P0318R1 `unwrap_ref_decay` and `unwrap_reference`