40 lines · cpp
1// RUN: %clang_cc1 %s -fsyntax-only -verify -std=c++112 3// Test reproduces a pair of crashes that were caused by code attempting4// to materialize a default constructor's exception specifier.5 6template <class T> struct A {7 static T tab[];8 9 const int M = UNDEFINED; // expected-error {{use of undeclared identifier}}10 11 int main()12 {13 A<char> a;14 15 return 0;16 }17};18 19template <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 25 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 the34// dependence of a nested initializer list.35template<int> struct X {36 static constexpr int n = 4;37 static constexpr int a[1][1] = {n};38};39 40