PR c++/85765 - SFINAE and non-type default template arg.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / enum24.C
blob60996563f49904a4f609e2c95f2f55241400ff39
1 // PR c++/56749
2 // { dg-require-effective-target c++11 }
4 enum normal_enum
6     not_scoped1,
7     not_scoped2
8 };
10 enum class scoped_enum
12     scoped1,
13     scoped2
16 template <normal_enum N=not_scoped1>
17 class A
19 public:
20     template <typename T>
21         void fun ()
22         {
23         }
26 template <scoped_enum N=scoped_enum::scoped1>
27 class B
29 public:
30     template <typename T>
31         void fun ()
32         {
33         }
37 template <typename T>
38 void tfun ()
40     A<> a;
41     a.fun<char>(); //<------------ THIS IS FINE
43     B<> b_defaulted;
44     B<scoped_enum::scoped1> b_explicited;
46     b_defaulted.fun<char>();          //<------------ UNEXPECTED: THIS FAILS 
47     b_defaulted.template fun<char>(); //<------------ THIS IS FINE
49     b_explicited.fun<char>();         //<------------ UNEXPECTED: THIS FAILS 
50     b_explicited.template fun<char>();//<------------ THIS IS FINE
53 int main(int argc, char const *argv[])
55     tfun<int>();
56     return 0;