1 // { dg-do compile }
2 // { dg-options "-std=c++0x" }
3 
4 //This instatiation is ok
5 template<typename T> struct S1
6 {
7     enum E : int;
8     enum E : T;
9 };
10 template struct S1<int>; //ok
11 
12 //This error is diagnosed at instantiation time
13 template<typename T> struct S2
14 {
15     enum E : int;   // { dg-error "previous definition" }
16     enum E : T;     // { dg-error "different underlying type" }
17 };
18 template struct S2<short>; // { dg-message "required from here" }
19 
20 //This error is diagnosed at compilation time
21 template<typename T> struct S3
22 {
23     enum E : int;   // { dg-error "previous definition" }
24     enum E : short; // { dg-error "different underlying type" }
25 };
26 
27