[support.initlist] (original) (raw)

17 Language support library [support]

17.10 Initializer lists [support.initlist]

The header <initializer_­list> defines a class template and several support functions related to list-initialization (see [dcl.init.list]).

All functions specified in this subclause are signal-safe.

17.10.1 Header <initializer_­list> synopsis [initializer.list.syn]

namespace std { template class initializer_list { public: using value_type = E; using reference = const E&; using const_reference = const E&; using size_type = size_t;

using iterator        = const E*;
using const_iterator  = const E*;

constexpr initializer_list() noexcept;

constexpr size_t size() const noexcept;     // number of elements
constexpr const E* begin() const noexcept;  // first element
constexpr const E* end() const noexcept;    // one past the last element

};

// [support.initlist.range], initializer list range access template constexpr const E* begin(initializer_list il) noexcept; template constexpr const E* end(initializer_list il) noexcept; }

An object of type initializer_­list<E> provides access to an array of objects of type const E.

[ Note

:

A pair of pointers or a pointer plus a length would be obvious representations for initializer_­list.

initializer_­list is used to implement initializer lists as specified in [dcl.init.list].

Copying an initializer list does not copy the underlying elements.

end note

]

If an explicit specialization or partial specialization ofinitializer_­list is declared, the program is ill-formed.

17.10.2 Initializer list constructors [support.initlist.cons]

constexpr initializer_list() noexcept;

Postconditions: size() == 0.

17.10.3 Initializer list access [support.initlist.access]

constexpr const E* begin() const noexcept;

Returns:A pointer to the beginning of the array.

If size() == 0 the values of begin() and end() are unspecified but they shall be identical.

constexpr const E* end() const noexcept;

Returns: begin() + size().

constexpr size_t size() const noexcept;

Returns:The number of elements in the array.

Complexity:Constant time.

17.10.4 Initializer list range access [support.initlist.range]

template<class E> constexpr const E* begin(initializer_list<E> il) noexcept;

template<class E> constexpr const E* end(initializer_list<E> il) noexcept;