// { dg-do assemble } template struct S1; // { dg-message "previous declaration" } template struct S1 {}; // { dg-error "redeclared" } used 1 template parameter template // { dg-message "original definition" } struct S2; template struct S2; // { dg-error "redefinition of default" } template // { dg-error "template parameter" } struct S3; template struct S3; // { dg-error "redeclared here" } template