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)21 A<int>::m_fn1 (int *, int)
22 {
23   C<int> a (0);
24   a.m_fn2<B> (0);
25 }
26