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