boost::operatorsで演算子を自動的に定義する

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);

他にも便利な機能がたくさんあります。

詳しくはドキュメントをご覧ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください