Синтез операторов в C++
После operator<=> = default компилятор строит остальные отношения порядка из одного трехстороннего сравнения.
Писать operator<, operator>
и остальные вручную не нужно - достаточно
одной строки с = default для <=>.
Запишем Span с двумя целыми и
выведем результат <:
#include <compare>
#include <iostream>
struct Span {
int start;
int end;
auto operator<=>(const Span&) const = default;
};
int main() {
Span left{0, 4};
Span right{0, 9};
std::cout << (left < right) << "\n";
return 0;
}
Объявите struct Bounds с двумя
int и operator<=> как
= default. Выведите 1,
если (2, 1) больше (1, 9)
через >.