- utility[meta header]
- std[meta namespace]
- pair[meta class]
- cpp17[meta cpp]
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, C++17 mode:
- GCC, C++17 mode: 7.1.0
- Visual C++: ??