Есть ли более простой способ добиться эффекта этой функции?
strong_ordering reverse(strong_ordering v) { if (v > 0) return strong_ordering::less; else if (v < 0) return strong_ordering::greater; else return v; }
Да:
strong_ordering reverse(strong_ordering v) { return 0 <=> v; }
Что буквально указано как то, что вы хотите :
Возвращает : v < 0 ? strong_ordering::greater : v > 0 ? strong_ordering::less : v.
v < 0 ? strong_ordering::greater : v > 0 ? strong_ordering::less : v
Это следует общему принципу, что x <=> y и y <=> x являются противоположностями, а v <=> 0 - это просто операция идентификации для v.
x <=> y
y <=> x
v <=> 0
v