#include #include struct rational { int d = 0, n = 1; auto operator<=>(const rational& b) const { return d * b.n <=> n * b.d; } bool operator== (const rational& b) const { return d * b.n == n * b.d; } auto operator<=>(int number) const { return d <=> n * number; } bool operator== (int number) const { return d == n * number; } }; int main() { rational a, b{1, 2}; assert( a != b && 1 > b ); }