重载运算符后跟模板类型参数

时间:2015-01-10 02:25:01

标签: c++

在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;这需要吗?

谢谢!

1 个答案:

答案 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。)

相关问题