如何反转 strong_ordering?

How do you reverse a strong_ordering?

有没有更简单的方法来实现这个功能的效果?

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;
}

literally specified as what you want:

Returns: v < 0 ? strong_­ordering​::​greater : v > 0 ? strong_­ordering​::​less : v.

这里遵循了x <=> yy <=> x是相反的一般原则,v <=> 0只是v的恒等运算。