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 <=> b
returns an object that compares<0
ifa < b
, compares>0
ifa > b
, and compares==0
ifa
andb
are 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 == b
impliesf(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
<0
iflhs < rhs
- compares
>0
iflhs > rhs
- and compares
==0
iflhs
andrhs
are 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