Когда я использовал бы boost :: равенства_компараблей против переопределения метода 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 :: равенства_компараблей, когда мне все равно нужно это реализовать?