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