你如何反转strong_ordering?

nul*_*ptr 9 c++ spaceship-operator c++20

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

strong_ordering reverse(strong_ordering v) {
    if (v > 0)
        return strong_ordering::less;
    else if (v < 0)
        return strong_ordering::greater;
    else
        return v;
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*rry 11

是的:

strong_ordering reverse(strong_ordering v)
{
    return 0 <=> v;
}
Run Code Online (Sandbox Code Playgroud)

这是字面上指定为你想要什么

返回v < 0 ? strong_­ordering?::?greater : v > 0 ? strong_­ordering?::?less : v

这遵循x <=> yy <=> x是对立的一般原则,并且v <=> 0只是 的恒等运算v