21 Language support library [language.support]

21.9 Initializer lists [support.initlist]

Заголовок <initializer_­list> определяет шаблон класса и несколько вспомогательных функций, связанных с инициализацией списка (см. [dcl.init.list]). Все функции, указанные в этом подпункте, являются signal-safe ([csignal.syn]).

21.9.1 Header <initializer_­list> synopsis [initializer_list.syn]

namespace std {
  template<class E> 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<class E> constexpr const E* begin(initializer_list<E> il) noexcept;
  template<class E> constexpr const E* end(initializer_list<E> il) noexcept;
}

Объект типа initializer_­list<E> предоставляет доступ к массиву объектов типа const E. [ Note: Пара указателей или указатель плюс длина были бы очевидными представлениями для initializer_­list. initializer_­list используется для реализации списков инициализаторов, как указано в [dcl.init.list]. Копирование списка инициализаторов не копирует базовые элементы. ] end note

Если объявлена ​​явная специализация или частичная специализацияinitializer_­list , программа имеет неправильный формат .

21.9.2 Initializer list constructors [support.initlist.cons]

constexpr initializer_list() noexcept;

Effects: Создает пустой initializer_­list объект.

Postconditions: size() == 0.

21.9.3 Initializer list access [support.initlist.access]

constexpr const E* begin() const noexcept;

Returns: Указатель на начало массива. Если size() == 0 значения begin() и не end() указаны, но они должны быть идентичными.

constexpr const E* end() const noexcept;

Returns: begin() + size().

constexpr size_t size() const noexcept;

Returns: Количество элементов в массиве.

Complexity: Постоянное время.

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

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

Returns: il.begin().

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

Returns: il.end().