[array.overview] (original) (raw)

23 Containers library [containers]

23.3 Sequence containers [sequences]

23.3.3 Class template array [array]

23.3.3.1 Overview [array.overview]

The header defines a class template for storing fixed-size sequences of objects.

An instance of array<T, N> stores N elements of type T, so that size() == N is an invariant.

An array is an aggregate that can be list-initialized with up to N elements whose types are convertible to T.

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 .

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]) ifT 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 a2are template-argument-equivalent.

namespace std { template<class T, size_t N> struct array { using value_type = T;using pointer = T*;using const_pointer = const T*;using reference = T&;using const_reference = const T&;using size_type = size_t;using difference_type = ptrdiff_t;using iterator = implementation-defined; using const_iterator = implementation-defined; using reverse_iterator = std::reverse_iterator<iterator>;using const_reverse_iterator = std::reverse_iterator<const_iterator>;constexpr void fill(const T& u);constexpr void swap(array&) noexcept(is_nothrow_swappable_v<T>);constexpr iterator begin() noexcept;constexpr const_iterator begin() const noexcept;constexpr iterator end() noexcept;constexpr const_iterator end() const noexcept;constexpr reverse_iterator rbegin() noexcept;constexpr const_reverse_iterator rbegin() const noexcept;constexpr reverse_iterator rend() noexcept;constexpr const_reverse_iterator rend() const noexcept;constexpr const_iterator cbegin() const noexcept;constexpr const_iterator cend() const noexcept;constexpr const_reverse_iterator crbegin() const noexcept;constexpr const_reverse_iterator crend() const noexcept;constexpr bool empty() const noexcept;constexpr size_type size() const noexcept;constexpr size_type max_size() const noexcept;constexpr reference operator[](size_type n);constexpr const_reference operator[](size_type n) const;constexpr reference at(size_type n); constexpr const_reference at(size_type n) const; constexpr reference front();constexpr const_reference front() const;constexpr reference back();constexpr const_reference back() const;constexpr T* data() noexcept;constexpr const T* data() const noexcept;};template<class T, class... U> array(T, U...) -> array<T, 1 + sizeof...(U)>;}