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