@@ -4622,11 +4622,23 @@ _NODISCARD bool operator>=(const basic_string<_Elem, _Traits, _Alloc>& _Left, _I
46224622template <class _Elem, class _Traits, class _Alloc>
46234623_NODISCARD strong_ordering operator<=>(
46244624 const basic_string<_Elem, _Traits, _Alloc>& _Left, const basic_string<_Elem, _Traits, _Alloc>& _Right) noexcept {
4625- return _Left.compare(_Right);
4625+ int _comparison = _Left.compare(_Right);
4626+ if (_comparison == 0) {
4627+ return strong_ordering::equivalent;
4628+ } else if (_comparison < 0) {
4629+ return strong_ordering::less;
4630+ }
4631+ return strong_ordering::greater;
46264632}
46274633template <class _Elem, class _Traits, class _Alloc>
46284634_NODISCARD strong_ordering operator<=>(const basic_string<_Elem, _Traits, _Alloc>& _Left, const _Elem* _Right) {
4629- return _Left.compare(_Right);
4635+ int _comparison = _Left.compare(_Right);
4636+ if (_comparison == 0) {
4637+ return strong_ordering::equivalent;
4638+ } else if (_comparison < 0) {
4639+ return strong_ordering::less;
4640+ }
4641+ return strong_ordering::greater;
46304642}
46314643#endif // _HAS_CXX20
46324644
0 commit comments