An array meets all of the requirements
of a container ([container.reqmts]) and
of a reversible container ([container.rev.reqmts]),
except that a default
constructed array object is not empty if N>0.
Descriptions are provided here
only for operations on array that are not described in
one of these tables and
for operations where there is additional semantic information.
array<T, N> is a structural type ([temp.param]) if
T is a structural type.
Two values a1 and a2 of type array<T, N>
are template-argument-equivalent if and only if
each pair of corresponding elements in a1 and a2
are template-argument-equivalent.