考虑以下:
template<int N>
class A
{
public:
A() : i(N) {}
template<int K>
void foo(A<K> other)
{
i = other.i; // <-- other.i is private
}
private:
int i;
};
int main()
{
A<1> a1;
A<2> a2;
a1.foo(a2);
return 0;
}
有没有办法在不将成员i和foo移动到一个公共基类或做一些疯狂的事情作为添加朋友类 A<1>的情况下使 'other.i' 可见?
也就是有没有办法让同一个模板类的模板做朋友呢?