飞船操作员返回
std::strong_ordering
它不是积分类型,因此不能用于
switch-case
陈述
你可以在
if-else
语句。
如果您喜欢使用
开关箱
,可以使用一个琐碎的实用程序来转换
std::strong_ordering
到具有一些预定义值的积分类型。
在这种情况下,返回-1/0/1将是非常自然的:
#include <iostream>
constexpr int strong_ordering_to_int(std::strong_ordering o)
{
if (o == std::strong_ordering::less) return -1;
if (o == std::strong_ordering::greater) return 1;
return 0;
}
void compare_values(int x, int y)
{
switch (strong_ordering_to_int(x <=> y))
{
case -1:
std::cout << "is less\n";
break;
case 1:
std::cout << "is greater\n";
break;
case 0:
std::cout << "is equal\n";
break;
}
}
int main()
{
compare_values(2, 3);
compare_values(3, 2);
compare_values(3, 3);
}
输出
is less
is greater
is equal
Live demo