我正在使用用戶自定義類型集和自定義比較函數。當我嘗試在集合之間使用==
運算符時,出現編譯時錯誤。我錯過了什麼?與自定義比較功能設置相等
#include <cassert>
#include <set>
// my user-defined type
struct IntWrapper {
int value;
};
// my compare function
struct LessComparer {
bool operator()(const IntWrapper& lhs, const IntWrapper& rhs) const {
return lhs.value < rhs.value;
}
};
int main() {
std::set<IntWrapper, LessComparer> s;
assert(s == s); // I would expect this to work
}
你的'operator =='(和'operator!=')在哪裏? – Toris
自定義比較器用於比較集合中的元素,不用於比較集合 – Loreto
這很有趣,但[this](http://ideone.com/tn1huh)起作用。不知道爲什麼,可能是編譯器認爲's'是一個函數。 – ilotXXI