comparison gcc/testsuite/g++.dg/cpp0x/enum24.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 // PR c++/56749
2 // { dg-require-effective-target c++11 }
3
4 enum normal_enum
5 {
6 not_scoped1,
7 not_scoped2
8 };
9
10 enum class scoped_enum
11 {
12 scoped1,
13 scoped2
14 };
15
16 template <normal_enum N=not_scoped1>
17 class A
18 {
19 public:
20 template <typename T>
21 void fun ()
22 {
23 }
24 };
25
26 template <scoped_enum N=scoped_enum::scoped1>
27 class B
28 {
29 public:
30 template <typename T>
31 void fun ()
32 {
33 }
34 };
35
36
37 template <typename T>
38 void tfun ()
39 {
40 A<> a;
41 a.fun<char>(); //<------------ THIS IS FINE
42
43 B<> b_defaulted;
44 B<scoped_enum::scoped1> b_explicited;
45
46 b_defaulted.fun<char>(); //<------------ UNEXPECTED: THIS FAILS
47 b_defaulted.template fun<char>(); //<------------ THIS IS FINE
48
49 b_explicited.fun<char>(); //<------------ UNEXPECTED: THIS FAILS
50 b_explicited.template fun<char>();//<------------ THIS IS FINE
51 }
52
53 int main(int argc, char const *argv[])
54 {
55 tfun<int>();
56 return 0;
57 }