1// { dg-do assemble } 2 3template <class T> 4struct S1; // { dg-message "previous declaration" } 5 6template <class T, class U> 7struct S1 {}; // { dg-error "redeclared" } used 1 template parameter 8 9template <class T = int> // { dg-message "original definition" } 10struct S2; 11 12template <class T = int> 13struct S2; // { dg-error "redefinition of default" } 14 15template <class T> // { dg-error "template parameter" } 16struct S3; 17 18template <int I> 19struct S3; // { dg-error "redeclared here" } 20 21template <template <class T> class C> 22struct S3; // { dg-error "redeclared here" } 23