While I was trying to learn about C++ operators, I stumbled upon a strange comparison operator on cppreference.com,* in a table that looked like this:

"Well, if these are common operators in C++, I better learn them", I thought. But all my attempts to elucidate this mystery were unsuccessful. Even here, on Stack Overflow I had no luck in my search.
And if there is, what does this operator do exactly?
* In the meantime cppreference.com updated that page and now contains information about the<=>operator.
Equal to ( === ) — returns true if the value on the left is equal to the value on the right, otherwise it returns false .
In PHP 7, a new feature, spaceship operator has been introduced. It is used to compare two expressions. It returns -1, 0 or 1 when first expression is respectively less than, equal to, or greater than second expression.
@hkBattousai it means that the object returns, when compared < 0 evaluates to true. That is, if a < b then (a <=> b) < 0 is always true.
This is called the three-way comparison operator.
According to the P0515 paper proposal:
There’s a new three-way comparison operator,
<=>. The expressiona <=> breturns an object that compares<0ifa < b, compares>0ifa > b, and compares==0ifaandbare equal/equivalent.To write all comparisons for your type, just write
operator<=>that returns the appropriate category type:
Return an _ordering if your type naturally supports
<, and we’ll efficiently generate<,>,<=,>=,==, and!=; otherwise return an _equality, and we’ll efficiently generate == and !=.Return strong if for your type
a == bimpliesf(a) == f(b)(substitutability, where f reads only comparison-salient state accessible using the nonprivate const interface), otherwise return weak.
The cppreference says:
The three-way comparison operator expressions have the form
lhs <=> rhs (1)The expression returns an object that
- compares
<0iflhs < rhs- compares
>0iflhs > rhs- and compares
==0iflhsandrhsare equal/equivalent.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With