[array.tuple]

# 23 Containers library [[containers]](./#containers)

## 23.3 Sequence containers [[sequences]](sequences#array.tuple)

### 23.3.3 Class template array [[array]](array#tuple)

#### 23.3.3.7 Tuple interface [array.tuple]

[ð](#lib:array)

`template<class T, size_t N>
  struct tuple_size<array<T, N>> : integral_constant<size_t, N> { };
`

[ð](#lib:tuple_element)

`template<size_t I, class T, size_t N>
  struct tuple_element<I, array<T, N>> {
    using type = T;
  };
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6398)

*Mandates*: I < N is true[.](#1.sentence-1)

[ð](#lib:array,get)

`template<size_t I, class T, size_t N>
  constexpr T& get(array<T, N>& a) noexcept;
template<size_t I, class T, size_t N>
  constexpr T&& get(array<T, N>&& a) noexcept;
template<size_t I, class T, size_t N>
  constexpr const T& get(const array<T, N>& a) noexcept;
template<size_t I, class T, size_t N>
  constexpr const T&& get(const array<T, N>&& a) noexcept;
`

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6416)

*Mandates*: I < N is true[.](#2.sentence-1)

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L6420)

*Returns*: A reference to the Ith element of a,
where indexing is zero-based[.](#3.sentence-1)
