1 // RUN: %clang_cc1 %s -fsyntax-only -verify -std=c++11 2 3 // Test reproduces a pair of crashes that were caused by code attempting 4 // to materialize a default constructor's exception specifier. 5 6 template <class T> struct A { 7 static T tab[]; 8 9 const int M = UNDEFINED; // expected-error {{use of undeclared identifier}} 10 mainA11 int main() 12 { 13 A<char> a; 14 15 return 0; 16 } 17 }; 18 19 template <class T> struct B { 20 static T tab[]; 21 22 // expected-error@+1 {{invalid application of 'sizeof' to an incomplete type}} 23 const int N = sizeof(B<char>::tab) / sizeof(char); 24 mainB25 int main() 26 { 27 B<char> b; 28 29 return 0; 30 } 31 }; 32 33 // This test checks for a crash that resulted from us miscomputing the 34 // dependence of a nested initializer list. 35 template<int> struct X { 36 static constexpr int n = 4; 37 static constexpr int a[1][1] = {n}; 38 }; 39 40