C++:模板可以成为 Class 的友元吗?

C++: Can a Template be friend of a Class?

是否可以与 class、class 模板的所有可能变体交朋友?

只是为了澄清,例如,这样的事情:

class A
{ friend template B; }    // syntactic error yeah

因此任何 B<X> 变体都可以操纵 A 的任何受保护属性。

A是一个小巧简单的class,有很多朋友在操作它的属性。只有其中一个需要成为模板。我知道我可以做到:

template <class T>
class A
{ friend class B<T>; }

但是这样我就不得不在所有其他朋友中更改我的代码,我想避免它。

您可以这样定义好友模板class:

class A{
    template<typename T>
    friend class B;
};

这将使 class B 的每个专业化成为 class A 的朋友。我有一个类似的问题,但目标相反:限制某些专业化:Friend template function instantiations that match parameter