1*67e74705SXin Li class X 2*67e74705SXin Li { 3*67e74705SXin Li friend class A; 4*67e74705SXin Li }; 5*67e74705SXin Li 6*67e74705SXin Li 7*67e74705SXin Li template <typename T1, typename T2> 8*67e74705SXin Li class B 9*67e74705SXin Li { 10*67e74705SXin Li }; 11*67e74705SXin Li 12*67e74705SXin Li template <class T> 13*67e74705SXin Li struct C 14*67e74705SXin Li { 15*67e74705SXin Li }; 16*67e74705SXin Li 17*67e74705SXin Li class D 18*67e74705SXin Li { 19*67e74705SXin Li B<D, class A> x; 20*67e74705SXin Li friend struct C<A>; 21*67e74705SXin Li }; 22