// RUN: %clang_cc1 -std=c++98 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors // RUN: %clang_cc1 -std=c++11 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors // RUN: %clang_cc1 -std=c++1y %s -verify -fexceptions -fcxx-exceptions -pedantic-errors #if __cplusplus < 201103L // expected-no-diagnostics #endif namespace std { __extension__ typedef __SIZE_TYPE__ size_t; template<typename T> struct initializer_list { const T *p; size_t n; initializer_list(const T *p, size_t n); }; } namespace dr990 { // dr990: 3.5 #if __cplusplus >= 201103L struct A { // expected-note 2{{candidate}} A(std::initializer_list<int>); // expected-note {{candidate}} }; struct B { A a; }; B b1 { }; B b2 { 1 }; // expected-error {{no viable conversion from 'int' to 'dr990::A'}} B b3 { { 1 } }; struct C { C(); C(int); C(std::initializer_list<int>) = delete; // expected-note {{here}} }; C c1[3] { 1 }; // ok C c2[3] { 1, {2} }; // expected-error {{call to deleted}} struct D { D(); D(std::initializer_list<int>); D(std::initializer_list<double>); }; D d{}; #endif }