C++ 标准禁止部分特化的友元声明。 (§14.5.3/8):
友元声明不得声明部分特化。 [例子:
template<class T> class A { };
class X {
template <class T> friend class A<T*>; //error
};
--结束示例]
其他问题,例如this one https://stackoverflow.com/q/1458752/1362568,
已收到援引此禁令的答复,但我想知道
理由。我没有看到它,也无法用我最喜欢的搜索引擎找到它。我
然而可以发现它直接回到了 C++98 标准,所以大概
其基本原理非常基本且明确。有人可以向我解释一下吗?
我没有参考资料,但我怀疑这是因为这会导致在友元声明类的范围内声明部分特化,而不是在相关模板的范围内声明,而不是创建一堆规则为了强制友元声明导致专业化处于正确的范围内,他们只是禁止它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)