30 #ifndef _INITIALIZER_LIST    31 #define _INITIALIZER_LIST    33 #pragma GCC system_header    35 #if __cplusplus < 201103L    36 # include <bits/c++0x_warning.h>    39 #pragma GCC visibility push(default)    47     class initializer_list
    50       typedef _E        value_type;
    51       typedef const _E&     reference;
    52       typedef const _E&     const_reference;
    53       typedef size_t        size_type;
    54       typedef const _E*     iterator;
    55       typedef const _E*     const_iterator;
    62       constexpr initializer_list(const_iterator __a, size_type __l)
    63       : _M_array(__a), _M_len(__l) { }
    66       constexpr initializer_list() noexcept
    67       : _M_array(0), _M_len(0) { }
    71       size() const noexcept { 
return _M_len; }
    74       constexpr const_iterator
    75       begin() const noexcept { 
return _M_array; }
    78       constexpr const_iterator
    79       end() const noexcept { 
return begin() + size(); }
    89     begin(initializer_list<_Tp> __ils) noexcept
    90     { 
return __ils.begin(); }
    99     end(initializer_list<_Tp> __ils) noexcept
   100     { 
return __ils.end(); }
   103 #pragma GCC visibility pop   107 #endif // _INITIALIZER_LIST