comparison gcc/testsuite/g++.dg/template/typedef27.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 // Origin: PR c++/42713
2 // { dg-do compile }
3
4 template<class T>
5 struct S
6 {
7 };
8
9 template<class T>
10 struct S0
11 {
12 typedef T TT;
13 };
14
15 template<class U, class V>
16 struct super_struct : S0<V>
17 {
18 typedef S0<V> super;
19 };
20
21 template<class U, class V, class W>
22 struct S1 : super_struct<U, V>
23 {
24 typedef super_struct<U, V> super;
25 typedef typename super::super Super2;
26 typedef typename Super2::TT Super2TT;
27 void
28 foo()
29 {
30 S<Super2TT> s1;
31 }
32 };
33
34 template<class U, class V>
35 struct S2 : super_struct<U, V>
36 {
37 typedef super_struct<U, V> super;
38 typedef typename super::super Super2;
39 typedef typename Super2::TT Super2TT;
40 void
41 foo()
42 {
43 S<Super2TT> s1;
44 }
45 };
46
47 int
48 main()
49 {
50 S1<int, S<int>, int> s1;
51 s1.foo();
52 S2<int, S<int> > s2;
53 s2.foo();
54 }
55