Ranges Algorithms Modernization - Spaceship #13092
Draft
+24
−25
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In C++20, algorithms from the standard library evolved to feature new niceties and additional compile-time checks. Simultaneously, the way user-defined types should overload comparison operators was revamped by C++20 with the new "spaceship operator"
<=>
. When standard-library comparison function objects, such asstd::less
orstd::equal
, were given the ranges update treatment, it became a requirement that all six comparison operator overloads (<
,<=
,>
,>=
,==
,!=
) must exist for the compared type. Due to this combination of factors, a few user-defined types in Dolphin's codebase required their comparison operator overloads be modernized before their usage in standard algorithms could be modernized. I have isolated these changes so that they may be recognized and more easily understood.