使用boost :: equality_comparable <T>与覆盖布尔运算符==有什么区别?

时间:2019-10-04 21:19:28

标签: c++ boost

何时使用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?

0 个答案:

没有答案