类模板中可以使用三种友元声明:
(1)普通非模板类或函数的友元声明。
(2)类模板或函数模板的友元声明,授予对所有实例类或函数的访问权。例如:
template class demo {
template friend class test;
template friend void fun();

};

(3)只授予某个模板的特定实例以访问权。例如:
template class test;
template class demo {
friend class test; //只有test类模板的T实例才可访问demo类私有成员
friend void fun();

};

侵联删

原文传送门