Home | History | Annotate | Download | only in CodeGenCXX
      1 // RUN: %clang_cc1 -std=c++11 -emit-llvm -o - -verify %s
      2 
      3 namespace std {
      4   typedef decltype(sizeof(int)) size_t;
      5 
      6   // libc++'s implementation
      7   template <class _E>
      8   class initializer_list
      9   {
     10     const _E* __begin_;
     11     size_t    __size_;
     12 
     13     initializer_list(const _E* __b, size_t __s)
     14       : __begin_(__b),
     15         __size_(__s)
     16     {}
     17 
     18   public:
     19     typedef _E        value_type;
     20     typedef const _E& reference;
     21     typedef const _E& const_reference;
     22     typedef size_t    size_type;
     23 
     24     typedef const _E* iterator;
     25     typedef const _E* const_iterator;
     26 
     27     initializer_list() : __begin_(nullptr), __size_(0) {}
     28 
     29     size_t    size()  const {return __size_;}
     30     const _E* begin() const {return __begin_;}
     31     const _E* end()   const {return __begin_ + __size_;}
     32   };
     33 }
     34 
     35 std::initializer_list<std::initializer_list<int>> pleasefail = {
     36   {1, 2}, {3, 4}, {5, 6} // expected-error {{cannot compile}}
     37 };
     38