p3-0x.cpp revision 82d0b0aab9088e977c2a44c4a5a90479c63149fe
1// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s 2 3using X = struct { // ok 4}; 5template<typename T> using Y = struct { // expected-error {{can not be defined in a type alias template}} 6}; 7 8class K { 9 virtual ~K(); 10 // FIXME: the diagnostic here is really bad 11 operator struct S {} (); // expected-error 2{{}} expected-note {{}} 12}; 13 14void f() { 15 int arr[3] = {1,2,3}; 16 17 for (struct S { S(int) {} } s : arr) { // expected-error {{types may not be defined in a for range declaration}} 18 } 19 20 new struct T {}; // expected-error {{allocation of incomplete type}} expected-note {{forward declaration}} 21 22 // FIXME: the diagnostic here isn't very good 23 try {} catch (struct U {}); // expected-error 3{{}} expected-note 2{{}} 24 25 (void)(struct V { V(int); })0; // expected-error {{'V' can not be defined in a type specifier}} 26 27 (void)dynamic_cast<struct W {}*>((K*)0); // expected-error {{'W' can not be defined in a type specifier}} 28 (void)static_cast<struct X {}*>(0); // expected-error {{'X' can not be defined in a type specifier}} 29 (void)reinterpret_cast<struct Y {}*>(0); // expected-error {{'Y' can not be defined in a type specifier}} 30 (void)const_cast<struct Z {}*>((const Z*)0); // expected-error {{'Z' can not be defined in a type specifier}} 31} 32 33void g() throw (struct Ex {}) { // expected-error {{'Ex' can not be defined in a type specifier}} 34} 35 36int alignas(struct Aa {}) x; // expected-error {{'Aa' can not be defined in a type specifier}} 37 38int a = sizeof(struct So {}); // expected-error {{'So' can not be defined in a type specifier}} 39int b = alignof(struct Ao {}); // expected-error {{'Ao' can not be defined in a type specifier}} 40 41namespace std { struct type_info; } 42const std::type_info &ti = typeid(struct Ti {}); // expected-error {{'Ti' can not be defined in a type specifier}} 43