G++声明模板友元函数
出自Linux Wiki
本文主要讨论利用类型参数,把模板函数声明为对应模板类的友员函数的问题。
下面是一个例子,注意:
- 在使用friend前加入了对func的声明
- 在声明friend时,func后有<>
- 此段代码不能在VC6中编译通过。
<cpp>
- include<iostream>
using namespace std;
template < class T > void func (T arg);
template < class T > class CTemp{
friend void func<> (T arg); private: T element; public: CTemp (T arg):element(arg){ }
};
template < class T > void func (T arg){
CTemp < T > a (arg); int i; cout << a.element << endl; return;
}
int main(){
func (5); return 0;
} </cpp>