llvm/clang/test/SemaCXX/PR20334-std_initializer_list_diagnosis_assertion.cpp

// RUN: %clang_cc1 -std=c++11 -verify=cxx11 -emit-llvm-only %s
// RUN: %clang_cc1 -std=c++98 -fsyntax-only -verify=cxx98 %s
// RUN: %clang_cc1 -std=c++11 -verify=cxx11 -emit-llvm-only %s -fexperimental-new-constant-interpreter
// RUN: %clang_cc1 -std=c++98 -fsyntax-only -verify=cxx98 %s -fexperimental-new-constant-interpreter


namespace std {
  template <class _E>
  class initializer_list {};
  // cxx11-error@-1 {{'std::initializer_list<int>' layout not recognized. Must be a non-polymorphic class type with no bases and two fields: a 'const E *' and either another 'const E *' or a 'std::size_t'}}
}

template<class E> int f(std::initializer_list<E> il);
	

int F = f({1, 2, 3});
// cxx98-error@-1 {{expected expression}}