| // { dg-do compile } |
| |
| // Origin: David Abrahams <dave@boost-consulting.com> |
| // Wolfgang Bangerth <bangerth@ticam.utexas.edu> |
| |
| // PR c++/12170: Deducing template template parameter from nested |
| // class template. |
| |
| template <typename> struct W {}; |
| |
| template< template<typename> class F, typename T> |
| int foo(W< F<T> >); |
| |
| |
| template<typename T> |
| struct L { |
| static int const value = sizeof(foo(W<T>())); |
| typedef T type; |
| }; |
| |
| |
| template <typename> |
| struct Y { |
| template <typename> struct X { typedef int type; }; |
| typedef typename L<X<int> >::type type; |
| }; |
| |
| template struct Y<int>; |