在boost :: unordered_map中,模板声明如下:
template <class K, class T, class H, class P, class A>
class unordered_map
{
在模板的底部,有一个声明如下的方法:
friend bool operator==<K,T,H,P,A>(
unordered_map const&, unordered_map const&);
有谁能告诉我为什么&lt; K,T,H,P,A&gt;这需要吗?
谢谢!
答案 0 :(得分:2)
如上所述,该行声明为operator==
函数模板declared previously as
template <class K, class T, class H, class P, class A>
bool operator==(unordered_map<K, T, H, P, A> const&,
unordered_map<K, T, H, P, A> const&);
如果您删除<K,T,H,P,A>
-
friend bool operator==(unordered_map const&, unordered_map const&);
然后它将与非模板函数operator==
建立联系,与函数模板分开且不同,这将是不正确的。
(相关的标准见于§14.5.4[temp.friends] / p1。)