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()34main() 35 { 36 apply<reverse_view >::type a2; 37 } 38