Определение operator!=
как !operator==
просто отлично
Чтобы легко определить эти тривиальные эквивалентные операторы, я всегда использую Boost.Operators .
Случай только с operator==
и operator!=
(т. е. с использованием равенства_компараблей <> ) не очень выигрывает.
Но когда вам нужно меньше и больше, чем слишком, или какая-то комбинация operator+
, operator*
и т. Д., Это становится очень удобным.
Пример для вашего случая будет читать
class Foo : private boost::equality_comparable< Foo >
{
private:
int n_;
std::string str_;
public:
...
bool operator==(const Foo& rhs) const
{
return n_ == rhs.n_ && str_ == rhs.str_;
}
};