Я хотел бы использовать операторы повышения для генерации функций сравнения таким образом:
template <typename T>
class Foo : boost::less_than_comparable<Foo<T>, Foo<T2> > {
private:
int bar;
public:
template <typename T2>
friend bool operator<(Foo<T> const& f1, Foo<T2> const& f2) {
if (typeid(T) == typeid(T2)) {
return f1.bar < f2.bar;
} else {
return sizeof(T) < sizeof(T2);
}
}
};
это возможно? Оператору не нужно дружить, если мы можем каким-то образом использовать операторы надстройки, чтобы использовать его для генерации остальных операторов.