1 template <class> class A 2 { 3 void m_fn1 (int *, int); 4 }; 5 6 template <class> class B 7 { 8 public: 9 typedef int Type; 10 }; 11 12 template <class> class C 13 { 14 public: 15 C (int); 16 template <template <class> class T> void m_fn2 (typename T<void>::Type); 17 }; 18 19 template <> 20 void m_fn1(int *,int)21A<int>::m_fn1 (int *, int) 22 { 23 C<int> a (0); 24 a.m_fn2<B> (0); 25 } 26