最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

class template
<array>

# std::tuple_element(C++11)

    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`の境界チェックがない。

## 参照