Files
cppdraft_translate/cppdraft/support/initlist.md
2025-10-25 03:02:53 +03:00

4.8 KiB

[support.initlist]

17 Language support library [support]

17.11 Initializer lists [support.initlist]

17.11.1 General [support.initlist.general]

1

#

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

All functions specified in [support.initlist] are signal-safe ([support.signal]).

17.11.2 Header <initializer_list> synopsis [initializer.list.syn]

// all freestandingnamespace 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 elementsconstexpr const E* begin() const noexcept; // first elementconstexpr const E* end() const noexcept; // one past the last element}; // [support.initlist.range], initializer list range accesstemplate constexpr const E* begin(initializer_list il) noexcept; template constexpr const E* end(initializer_list il) noexcept;}

1

#

An object of type initializer_list provides access to an array of objects of type const E.

[Note 1:

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]

2

#

If an explicit specialization or partial specialization ofinitializer_list is declared, the program is ill-formed.

17.11.3 Initializer list constructors [support.initlist.cons]

🔗

constexpr initializer_list() noexcept;

1

#

Postconditions: size() == 0.

17.11.4 Initializer list access [support.initlist.access]

🔗

constexpr const E* begin() const noexcept;

1

#

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;

2

#

Returns: begin() + size().

🔗

constexpr size_t size() const noexcept;

3

#

Returns: The number of elements in the array.

4

#

Complexity: Constant time.

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

🔗

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

1

#

Returns: il.begin().

🔗

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

2

#

Returns: il.end().