我只是在研究一个三向比较运算符<=>
。我看到它返回std::strong_ordering
。但是,我无法理解编译器如何仅0
在比较运算符(so<0
但不是so<1
)中进行限制
#include<compare>
int main()
{
std::strong_ordering so = 55 <=> 10;
so < 0; // Fine
so < 1; // Fails
}
同样,so>20
也不行。以下也不起作用:
constexpr int Zero = 0;
so == Zero; // Error
so == 0; // Fine
编辑- 有趣的观察(在 MSVC 编译器上)。以下是有效的:
so < nullptr