如若一个类,当时设计的时候,没有重载某运算符

如果一个类,当时设计的时候,没有重载某运算符。
如果一个类,当时设计的时候,没有重载某运算符。

现在调用者发现,有这样的需求: 需要对2个对象之间毕竟比较。

尽管,我可以自己写函数来进行比较大小是否相同。

但会引起另一个问题: 

两个对象,依然无法直接使用operator!=

这个运算符,我改怎么办?

如果作为调用者的我而言,直接使用我自己写的比较函数的话,代码不优雅,

无法应用std::equal ,或者boost 之类的高搭上的接口

------解决思路----------------------
只需要定义 operator <, 其他可以自行推导。 

#include <iostream>
#define CMP_OP(Type) bool operator > (Type const& a, Type const &  b){\
   return b < a;\
}\
bool operator == (Type const& a, Type const& b){\
   return !(a < b 
------解决思路----------------------
  b < a);\
}\
bool operator != (Type const& a, Type const& b){\
   return   a < b 
------解决思路----------------------
 b < a;\
}\
bool operator <= (Type const& a, Type const &  b){\
   return a < b 
------解决思路----------------------
 a == b;\
}\
bool operator >= (Type const& a, Type const &  b){\
   return  a > b 
------解决思路----------------------
 a == b;\
}

struct Foo
{
   int v;
};

bool operator < (Foo const& a, Foo const& b)
{
   return a.v < b.v;
}

CMP_OP(Foo)

int main()
{
   Foo a = {1};
   Foo b = {2};

   std::cout << std::boolalpha
             << (a < b) << std::endl 
             << (a <= b) << std::endl
             << (a > b) << std::endl
              << (a >= b) << std::endl      
             << (a == b) << std::endl   
             << (a != b) << std::endl;      
    
  return 0;
}