namespacestd{template<classE>classinitializer_list{public:typedefsize_tsize_type;typedefconstE*const_iterator;private:iteratorM_array;size_typeM_len;// The compiler can call a private constructor.constexprinitializer_list(const_iteratora,size_typel):M_array(a),M_len(l){}public:constexprinitializer_list()noexcept:M_array(0),M_len(0){}// Number of elements.constexprsize_typesize()constnoexcept{returnM_len;}// First element.constexprconst_iteratorbegin()constnoexcept{returnM_array;}// One past the last element.constexprconst_iteratorend()constnoexcept{returnbegin()+size();}};}