1 // Origin PR c++/45200
2 // { dg-do compile }
3 
4 template<typename T>
5 struct remove_reference
6 {
7   typedef T type;
8 };
9 
10 template<typename TestType>
11 struct forward_as_lref
12 {
13 };
14 
15 template<typename Seq, typename N>
16 struct apply1
17 {
18   typedef typename remove_reference<Seq>::type seq;
19   typedef forward_as_lref<typename seq::seq_type> type; //#0
20 };
21 
22 template<typename Seq>
23 struct apply
24 {
25   typedef forward_as_lref<typename remove_reference<Seq>::type::seq_type> type; //#1
26 };
27 
28 struct reverse_view
29 {
30   typedef int seq_type;
31 };
32 
33 int
main()34 main()
35 {
36   apply<reverse_view >::type a2;
37 }
38