想象一下我们有这样的代码:
template <class, class>
class Element
{};
template <class T>
class Util
{
public:
template <class U>
using BeFriend = Element<T, U>;
};
可以加BeFriend
好友吗?(属于Util
,或任何其他类别)。
编辑
尝试了“明显”的语法,但在 Clang 3.6 中都失败了。
template <class> friend class BeFriend;
template <class> friend BeFriend;
我不知道第二种语法,但在这个答案中找到了它。它似乎对非模板别名有效(并且是必需的),但在这种别名模板化的情况下没有帮助。
(注意:正如一些人可以从最小示例中推断出的那样,我正在寻找一种方法来解决 C++ 不允许与部分模板专业化成为朋友的限制)