1// { dg-do run  }
2template<class T> class D
3{
4	public:
5		int f();
6};
7
8template<class T> int D<T>::f()
9{
10	return sizeof(T);
11}
12
13template<template<class> class D,class E> class C
14{
15		D<E> d;
16	public:
17		template<template<class> class F> int f(F<int>);
18};
19
20template<template<class> class D,class E>
21template<template<class> class F> int C<D,E>::f(F<int>)
22{
23	F<E> d2;
24	return d2.f();
25}
26
27int main()
28{
29	C<D,int> c;
30	D<int> d;
31	c.f(d);
32}
33