用法:
1 c++一个重要的功能是复用,避免写重复代码,而boost为自定义类的operator的实现代码提供了复用实现
2 operator重载中,有这样一个事实:多数运算符重载实现中可以通过调用少数的运算符重载函数来实现
如 下:下面的实现,都是通过<和>两个运算符
friend bool operator<=(const T& x, const U& y) { return !static_cast<bool>(x > y); }
friend bool operator>=(const T& x, const U& y) { return !static_cast<bool>(x < y); }
friend bool operator>(const U& x, const T& y) { return y < x; }
friend bool operator<(const U& x, const T& y) { return y > x; }
friend bool operator<=(const U& x, const T& y) { return !static_cast<bool>(y < x); }
friend bool operator>=(const U& x, const T& y) { return !static_cast<bool>(y > x); }
3 boost中通过把2中的大多数运算符封装到基类中,在你定义的类只要从boost库提供的基类中继承,并实现类似上面<和>这样的重载操作符,么在派生类中
就自动有了基类提供的操作符重载实现;
例如:从boost::less_than_comparable<T>继承,
less_than_comparable 要求类型T具有以下语义,就是定义下面的操作符重载函数
bool operator<(const T&,const T&);
bool operator>(const T&,const T&);
bool operator<=(const T&,const T&);
bool operator>=(const T&,const T&);
要派生自 boost::less_than_comparable, 派生类(T)必须提供:
bool operator<(const T&, const T&);