boost::operatorsを使うと、主要な演算子を定義するだけで、残りの演算子を自動的に定義することができます。
ヘッダファイル
#include <boost/operators.hpp>
boost::equality_comparableは、==を元に!=を作成します。
class Foo : private boost::equality_comparable<Foo>
{
public:
Foo(int val_) : val(val_){}
bool operator==(const Foo& Other) const { return this->val == Other.val; }
private:
int val;
};
Foo a(1), b(2);
bool ret = (a != b);
boost::less_than_comparableは、<を元に>,<=.>=を作成します。
class Foo : private boost::less_than_comparable<Foo>
{
public:
Foo(int val_) : val(val_){}
bool operator<(const Foo& Other) const { return this->val < Other.val; }
private:
int val;
};
Foo a(1), b(2);
bool ret1 = (a > b);
bool ret2 = (a <= b);
bool ret3 = (a >= b);
他にも便利な機能がたくさんあります。
詳しくはドキュメントをご覧ください。