1template<class T, class U = int> class D
2{
3	public:
4		int f();
5};
6
7template<class T, class U> int D<T,U>::f()
8{
9	return sizeof(T)+sizeof(U);
10}
11
12template<template<class> class D,class E> class C
13{
14		D<E> d;
15	public:
16		int f() { return d.f(); }
17};
18
19template<template<class> class D,class E> int f(D<E> &d1)
20{
21	d1.f();
22	C<D,E> d2;
23	d2.f();
24	return 0;
25}
26
27int main()
28{
29	D<int> c1;
30	D<char> c2;
31	f(c1);
32	f(c2);
33}
34