最終更新日時: 2024年06月11日 22時45分38秒 (JST)
Akira Takahashi が更新

履歴 編集

<utility>

# std::pair::推論補助(C++17)

    namespace std {
      template <class T1, class T2>
      pair(T1, T2) -> pair<T1, T2>;
    }

## 概要

`std::pair`クラステンプレートの型推論補助。

## 備考

- パラメータの型が`const T1&...`や`T1&&...`ではなくコピーで受け取るようにしているため、配列からポインタへの変換、関数から関数ポインタへの変換が起こる
- `std::make_pair()`関数と違って、`std::reference_wrapper<T>`を`T&`に展開はしない

## 例

    #include <utility>
    #include <type_traits>

    int main()
    {
      std::pair p {3, "Hello"};
      static_assert(std::is_same_v<
        decltype(p),
        std::pair<int, const char*>
      >);
    }

### 出力

## バージョン

### 言語

- C++17

### 処理系

- Clang:
- GCC: 7.1.0 ✅
- Visual C++: ??

## 関連項目

- C++17 クラステンプレートのテンプレート引数推論

## 参照

- P0433R2 Toward a resolution of US7 and US14: Integrating template deduction for class templates into the standard library