aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/template/typedef34.C
blob: a82e155e266269142af08a01bebe9dcde9fa96c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Origin PR c++/45200
// { dg-do compile }

template<typename T>
struct remove_reference
{
  typedef T type;
};

template<typename TestType>
struct forward_as_lref
{
};

template<typename Seq, typename N>
struct apply1
{
  typedef typename remove_reference<Seq>::type seq;
  typedef forward_as_lref<typename seq::seq_type> type; //#0
};

template<typename Seq>
struct apply
{
  typedef forward_as_lref<typename remove_reference<Seq>::type::seq_type> type; //#1
};

struct reverse_view
{
  typedef int seq_type;
};

int
main()
{
  apply<reverse_view >::type a2;
}