1// { dg-do compile } 2 3// Origin: David Abrahams <dave@boost-consulting.com> 4// Wolfgang Bangerth <bangerth@ticam.utexas.edu> 5 6// PR c++/12170: Deducing template template parameter from nested 7// class template. 8 9template <typename> struct W {}; 10 11template< template<typename> class F, typename T> 12int foo(W< F<T> >); 13 14 15template<typename T> 16struct L { 17 static int const value = sizeof(foo(W<T>())); 18 typedef T type; 19}; 20 21 22template <typename> 23struct Y { 24 template <typename> struct X { typedef int type; }; 25 typedef typename L<X<int> >::type type; 26}; 27 28template struct Y<int>; 29