我的问题与这个有点相关。
我想为某些类重载运算符 << ,我发现两种不同的符号都可以工作:
template <class T>
class A{
T t;
public:
A(T init) : t(init){}
friend ostream& operator<< <> (ostream &os, const A<T> &a); //need forward declaration
//template <class U> friend ostream& operator<< (ostream &os, const A<U> &a);
};
我是否用不同的符号定义相同的事物?或者第一个版本在<<的哪个实例(在这种情况下只有与我的类A具有相同T的实例)是A的朋友时更具限制性?