1 /* Verify -Wmismatched-tags on alias definitions. 2 { dg-do compile { target c++11 } } 3 { dg-options "-Wall -Wmismatched-tags" } */ 4 5 class A; // { dg-message "declared as 'class'" } 6 using AA = A; 7 using AA = class A; 8 using AA = struct A; // { dg-warning "-Wmismatched-tags" } 9 10 11 template <class> class B; // { dg-message "declared as 'class'" } 12 13 using Bi = B<int>; 14 using Bi = class B<int>; 15 using Bi = struct B<int>; // { dg-warning "-Wmismatched-tags" } 16 using Bi = class B<int>; 17 using Bi = struct B<int>; // { dg-warning "-Wmismatched-tags" } 18 19 20 template <class> class C; // { dg-message "declared as 'class'" } 21 22 template <class T> using Cp = C<T*>; 23 template <class T> using Cp = class C<T*>; 24 template <class T> 25 using Cp = struct C<T*>; // { dg-warning "-Wmismatched-tags" } 26 27 template <class T> using Cp = class C<T*>; 28 template <class T> 29 using Cp = struct C<T*>; // { dg-warning "-Wmismatched-tags" } 30