我想重载运算符<对于std :: pair class。
template <>
bool operator< (const std::pair<int, std::string>& lhs, const std::pair<int, std::string>& rhs) {
return lhs.first > rhs.first || (!(rhs.first > lhs.first) && lhs.second < rhs.second);
};
我收到以下错误:没有函数模板匹配函数模板特化'运算符&lt;'
我也尝试过:
template <>
bool std::pair<int, std::string>::operator< (const std::pair<int, std::string>& lhs, const std::pair<int, std::string>& rhs) {
return lhs.first<rhs.first || (!(rhs.first<lhs.first) && lhs.second<rhs.second);
};
这次我收到错误:重载'运算符&lt;'必须是二元运算符(有3个参数)
我该怎么做?
答案 0 :(得分:2)
您所写的是模板专业化,假设您之前已定义过该模板。
如评论中所述,在这种情况下,您不需要让运算符重载模板,因为您已经专门设置了pair
。