N1624=04-0064
Matt Austern
24 Mar 2004
Resolutions to fixed-size array issues
Resolution to issue 8.2:
Add a clause to section 6.2.2 [tr.array.array]: "The effect of calling
front() or back() for a zero-sized array is implementation defined."
Resolution to issue 8.4:
6.1.1 Header <tuple> synopsis
Add:
template <class T, size_t N > struct array;
template <class T, size_t N> struct tuple_size<array<T, N> >;
template <int I, class T, size_t N> struct tuple_element<I, array<T, N> >;
template <int I, class T, size_t N> T& get( array<T, N>&);
template <int I, class T, size_t N> const T& get(const array<T, N>&);
6.1.4
Add a new section 6.1.4
tuple_size<array<T, N> >::value
Type: integral constant expression.
Value: N
tuple_element<I, array<T, N> >::type
Requires: 0 <= I < N. The program is ill-formed if I is out of bounds.
Value: The type T.
template <int I, class T, size_t N> T& get(array<T, N>& a);
Requires: 0 <= I < N. The program is ill-formed if I is out of bounds.
Return type: T&.
Returns: A reference to the Ith element of a, where indexing is zero-based.
template <int I, class T, size_t N> const T& get(const array<T, N>& a);
Requires: 0 <= I < N. The program is ill-formed if I is out of bounds.
Return type: const T&.
Returns: A const reference to the Ith element of a, where indexing is zero-based.