namespace std {
template <std::size_t I, class T> class tuple_element; // 先行宣言
template <std::size_t I, class T, std::size_t N>
struct tuple_element<I, array<T, N>> {
static_assert(I < N, implementation-defined);
using type = T;
}
}
概要
tuple_element
は、タプルとして見なせる型から、I
番目の要素型を取得するためのクラスである。
<array>
ヘッダでは、array
クラスに関する特殊化を定義する。
array
の特殊化では、tuple_element::type
は常にT
である。
適格要件
I < N
であること
例
#include <array>
#include <type_traits>
int main()
{
static_assert(std::is_same<
std::tuple_element<0, std::array<int, 2>>::type,
int
>::value, "");
static_assert(std::is_same<
std::tuple_element<1, std::array<int, 2>>::type,
int
>::value, "");
}
出力
バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: 2008 (std::tr1) ✅, 2010 ✅, 2012 ✅
備考
GCC 4.7、およびVisual C++ 10.0のarray
に対するtuple_element
の特殊化では、I
の境界チェックがない。