我有通用类
template < class T, class Compare >
class MyClass {..};
我需要使用Compare检查两个对象的相等性。 我知道有两种方法可以做到。
方法
bool isEqual(T first, T second) {
return (!Compare()(first,second) && !Compare()(second,first));
};
或
bool isEqual(T first, T second) {
return first == second;
};
但使用==是否正确? 如果没有,有什么方法可以做到吗?
答案 0 :(得分:2)
使用==
是不正确的,只是因为实例化类可能不支持此运算符。
至于
如果没有,有什么方法可以做到吗?
有 - 你提到的第一种方式。
顺便提一下,如果你的Compare
建模二元谓词概念(它可能应该与STL的大部分一致),它应该是
Compare(first, second)
表格
Compare(first)(second)
表示一些仿函数,当给定一个操作数时,返回一些可以在另一个操作数上使用的仿函数。它不太可能是你的意思。