diff --git a/stl/inc/optional b/stl/inc/optional index 6b885027223..a86eaa23be7 100644 --- a/stl/inc/optional +++ b/stl/inc/optional @@ -926,7 +926,7 @@ _NODISCARD constexpr bool operator>=(const _Ty1& _Left, const optional<_Ty2>& _R #ifdef __cpp_lib_concepts // clang-format off _EXPORT_STD template - requires (!_Is_specialization_v<_Ty2, optional>) + requires (!_Derived_from_specialization_of<_Ty2, optional>) && three_way_comparable_with<_Ty1, _Ty2> _NODISCARD constexpr compare_three_way_result_t<_Ty1, _Ty2> operator<=>(const optional<_Ty1>& _Left, const _Ty2& _Right) diff --git a/stl/inc/xutility b/stl/inc/xutility index df7fb2358b4..c0b12de5790 100644 --- a/stl/inc/xutility +++ b/stl/inc/xutility @@ -404,6 +404,15 @@ using _Algorithm_int_t = conditional_t, _Ty, ptrdiff_t>; template concept _Destructible_object = is_object_v<_Ty> && destructible<_Ty>; +template