```
tuple_size<array<T, N> >::value
```

*Return type:* integral constant expression.

*Value:* N

```
tuple_element<I, array<T, N> >::type
```

*Requires:* I < N. The program is ill-formed if I is out of bounds.

*Value:* The type T.

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

*Requires:* I < N. The program is ill-formed if I is out of bounds.

*Returns:* A reference to the Ith element of a,
where indexing is zero-based.

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

*Effects:* Equivalent to return std::move(get<I>(a));

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

*Requires:* I < N. The program is ill-formed if I is out of bounds.

*Returns:* A const reference to the Ith element of a,
where indexing is zero-based.