diff --git a/stl/inc/optional b/stl/inc/optional index 6b88502722..a86eaa23be 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 b8a210a37a..f32800f13b 100644 --- a/stl/inc/xutility +++ b/stl/inc/xutility @@ -400,6 +400,15 @@ using _Algorithm_int_t = conditional_t, _Ty, ptrdiff_t>; template concept _Destructible_object = is_object_v<_Ty> && destructible<_Ty>; +template