何时使用boost :: equality_comparable与覆盖T的bool operator==(T const& rhs)
方法?
这是一些示例代码。
#include <boost/operators.hpp>
enum class AnEnum : uint64_t;
struct Base : boost::equality_comparable<Base> {
std::shared_ptr<AnEnum > units;
std::shared_ptr<int> value;
bool operator ==(Base const& rhs) {
return (*value == *rhs.value)
&& (*units == *rhs.units);
}
friend bool operator == (const Base & lhs, const Base & rhs) {
return (*lhs.value == *rhs.value)
&& (*lhs.units == *rhs.units);
};
};
我希望Boost可以自动实现操作符==,但是编译器抱怨缺少实现错误。无论如何,为什么我要使用boost :: equality_comparable?