- utility[meta header]
- std[meta namespace]
- class template[meta id-type]
- cpp11[meta cpp]
namespace std {
template <size_t I, class T> class tuple_element;
template <class T1, class T2>
struct tuple_element<0, pair<T1, T2>> {
using type = T1;
};
template <class T1, class T2>
struct tuple_element<1, pair<T1, T2>> {
using type = T2;
};
}
- pair[link ../pair.md]
tuple_element
は、タプルとして見なせる型から、I
番目の要素型を取得するためのクラスである。
<utility>
ヘッダでは、pair
に関する特殊化を定義する。
#include <utility>
#include <type_traits>
int main()
{
static_assert(std::is_same<
std::tuple_element<0, std::pair<int, double>>::type,
int
>::value, "");
static_assert(std::is_same<
std::tuple_element<1, std::pair<int, double>>::type,
double
>::value, "");
}
- std::tuple_element[color ff0000]
- C++11
- Clang: ??
- GCC:
- GCC, C++11 mode: 4.6.1
- ICC: ??
- Visual C++: 2008 (std::tr1), 2010, 2012, 2013, 2015