dr10xx.cpp revision ef8225444452a1486bd721f3285301fe84643b00
1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// RUN: %clang_cc1 -std=c++98 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RUN: %clang_cc1 -std=c++11 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RUN: %clang_cc1 -std=c++1y %s -verify -fexceptions -fcxx-exceptions -pedantic-errors
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// expected-no-diagnostics
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace std {
85e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)  __extension__ typedef __SIZE_TYPE__ size_t;
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  template<typename T> struct initializer_list {
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const T *p; size_t n;
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    initializer_list(const T *p, size_t n);
135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  };
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace dr1070 { // dr1070: 3.5
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if __cplusplus >= 201103L
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct A {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    A(std::initializer_list<int>);
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct B {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int i;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    A a;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  B b = {1};
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct C {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::initializer_list<int> a;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    B b;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::initializer_list<double> c;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  C c = {};
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci