いわゆるあれ

keyとvalueを持ち、keyでsortができるクラス、構造体

template < typename TYPE_A, typename TYPE_B>
class Class{
  public:
    TYPE_A key;
    TYPE_B value;
    Class(TYPE_A key, TYPE_B value)
    :key(key), value(value) {};
    bool operator< (const Class & right)const {
        return key < right.key;
    }
};

参考
http://www.hiramine.com/programming/c_cpp/operator.html

比較演算(「==」「!=」「<」「>」)

結論

bool CPoint3d::operator == ( const CPoint3d& b ) const;
bool CPoint3d::operator != ( const CPoint3d& b ) const;
bool CPoint3d::operator < ( const CPoint3d& b ) const;
bool CPoint3d::operator > ( const CPoint3d& b ) const;

考察(他の選択肢)

①戻り値の型を void にする。
void CPoint3d::operator == ( const CPoint3d& b ) const;
関数が仕事をしなくなる。
②戻り値の型に const をつける。
const bool CPoint3d::operator == ( const CPoint3d& b ) const;
constをつけても、つけなくても違いがない。


http://homepage2.nifty.com/well/const.html

メンバ関数 GetiSize() では、メンバ変数を読んでいるだけで、変更はしていないので const なオブジェクトで使われても問題ないように思われるのですが、コンパイラは GetiSize() がメンバ変数を変更しているかもしれないと判断し、コンパイルエラーとなってしまいます。そこで、これを避けるには、次のように、メンバ関数の定義に const キーワードをつけて、コンパイラに「この関数はメンバ変数を変更しない」ということを知らせるようにします。

なんでobjectがconstなのかは不明だが、比較演算子の戻り値には上
のようにconstを付けないとコンパイルできない。