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		int f() { return d.f(); }
18};
19
20template<template<class> class D,class E> int f(D<E> &d1)
21{
22	d1.f();
23	C<D,E> d2;
24	d2.f();
25	return 0;
26}
27
28int main()
29{
30	D<int> c1;
31	D<char> c2;
32	f(c1);
33	f(c2);
34}
35