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