#include <iostream>
template <typename T>
class MyTemplateClass{
public :
friend void Counts();
friend void Reports(const MyTemplateClass<T> &r_TemplateClass) ;
template <typename Os_Type>
friend std::ostream& operator<< (std::ostream &os, const MyTemplateClass<Os_Type> &r_TemplateClass);
};
template <typename T>
void Counts(){
}
template <typename T>
void Reports(const MyTemplateClass<T> &r_TemplateClass){
}
//由于友元函数并不是类成员的方法,那么我们就不能使用类成员的模板参数T,只能自己定义模板参数了
//假如你一定要使用类成员的参数T的话,那么你可以将在外部定义的operator <<移到类中定义,此时,你需要删掉//template <typename Os_Type> 就行,将Os_Type模板参数改为T即可
//
template <typename Os_Type>
std::ostream& operator<<(std::ostream &os, const MyTemplateClass<Os_Type> &r_TemplateClass){
return os;
}
int main() {
MyTemplateClass<int> mytemplate;
std::cout<<mytemplate<<std::endl;
return 0;
}