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