// RUN: %clang_cc1 -fsyntax-only -verify %s
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
; // expected-note 4 {{previous use is here}}
;
void ;
void ;
void ; // expected-error {{use of 'A' with tag type that does not match previous declaration}}
void ; // expected-error {{use of 'A' with tag type that does not match previous declaration}}
;
;
;
;
void ;
void ;
void ; // expected-error {{use of 'B<float>' with tag type that does not match previous declaration}}
//void b4(enum B<float>); // this just doesn't parse; you can't template an enum directly
void ;
void ;
void ; // expected-error {{use of 'Member' with tag type that does not match previous declaration}}
void ; // expected-error {{use of 'Member' with tag type that does not match previous declaration}}
void ; // expected-error {{no struct named 'Member' in 'B<int>'}}
void ; // expected-error {{no class named 'Member' in 'B<int>'}}
void ; // expected-error {{no union named 'Member' in 'B<int>'}}
void ; // expected-error {{no enum named 'Member' in 'B<int>'}}
void ; // expected-error {{use of 'Member' with tag type that does not match previous declaration}}
void ; // expected-error {{use of 'Member' with tag type that does not match previous declaration}}
void ;
void ; // expected-error {{use of 'Member' with tag type that does not match previous declaration}}
;
C<float> f1;
C<int> f2; // expected-note {{in instantiation of template class}}
C<A> f3; // expected-note {{in instantiation of template class}}