我只是在研究一个三向比较运算符<=>。我看到它返回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