C++:模板可以成为类的朋友吗?

Ali*_*jas 4 c++ templates friend-class

是否有可能成为一个类的朋友,一个类模板的所有可能的变体?

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

class A
{ friend template B; }    // syntactic error yeah
Run Code Online (Sandbox Code Playgroud)

因此,任何B<X>变体都可以操纵A.

A是一个小而简单的类,有很多操作其属性的朋友。只有其中一个需要是模板。我知道我可以这样做:

template <class T>
class A
{ friend class B<T>; }
Run Code Online (Sandbox Code Playgroud)

但是所以我必须在所有其他朋友中更改我的代码,我想避免它。

Dmi*_*nov 5

你可以像这样定义一个朋友模板类:

class A{
    template<typename T>
    friend class B;
};
Run Code Online (Sandbox Code Playgroud)

这将使 .class B的朋友的每个专业化class A。我有一个类似的问题,但目标相反:限制一些专业化:匹配参数的朋友模板函数实例