新的C++20太空船运算符是否允许以简洁的方式表达短路的多条件比较?比如说比下面这个更好:
const firstCriteriaComparisonResult = lhs.x <=> rhs.x;
return firstCriteriaComparisonResult != 0 ? firstCriteriaComparisonResult : lhs.y <=> rhs.y;
operator<=>()
成员必须是一个模板函数(以RHS类型为模板参数),那么它必须手动编写。模板操作符不能被= default
。关于评论2:没有“正常的比较重载”,也从来没有过。比较重载一直是个混乱的问题,而三路比较运算符正是为了解决这个问题而添加到语言中的。 - Szczepan Hołyszewski