[2/2] libstdc++: Implement LWG 3692/3702 changes to zip_/zip_transform_view
Commit Message
Tested on x86_64-pc-linux-gnu, does this look OK for trunk?
libstdc++-v3/ChangeLog:
* include/std/ranges (zip_view::_Iterator::operator<): Remove.
(zip_view::_Iterator::operator>): Remove.
(zip_view::_Iterator::operator<=): Remove.
(zip_view::_Iterator::operator>=): Remove.
(zip_view::_Iterator::operator<=>): Remove three_way_comparable
constraint.
(zip_transform_view::_Iterator): Ditto.
---
libstdc++-v3/include/std/ranges | 43 +--------------------------------
1 file changed, 1 insertion(+), 42 deletions(-)
Comments
On Thu, 25 Aug 2022 at 16:40, Patrick Palka via Libstdc++
<libstdc++@gcc.gnu.org> wrote:
>
> Tested on x86_64-pc-linux-gnu, does this look OK for trunk?
OK, thanks.
>
> libstdc++-v3/ChangeLog:
>
> * include/std/ranges (zip_view::_Iterator::operator<): Remove.
> (zip_view::_Iterator::operator>): Remove.
> (zip_view::_Iterator::operator<=): Remove.
> (zip_view::_Iterator::operator>=): Remove.
> (zip_view::_Iterator::operator<=>): Remove three_way_comparable
> constraint.
> (zip_transform_view::_Iterator): Ditto.
> ---
> libstdc++-v3/include/std/ranges | 43 +--------------------------------
> 1 file changed, 1 insertion(+), 42 deletions(-)
>
> diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
> index d748cb73346..bf0ff29c38c 100644
> --- a/libstdc++-v3/include/std/ranges
> +++ b/libstdc++-v3/include/std/ranges
> @@ -4616,30 +4616,9 @@ namespace views::__adaptor
> }(make_index_sequence<sizeof...(_Vs)>{});
> }
>
> - friend constexpr bool
> - operator<(const _Iterator& __x, const _Iterator& __y)
> - requires __detail::__all_random_access<_Const, _Vs...>
> - { return __x._M_current < __y._M_current; }
> -
> - friend constexpr bool
> - operator>(const _Iterator& __x, const _Iterator& __y)
> - requires __detail::__all_random_access<_Const, _Vs...>
> - { return __y < __x; }
> -
> - friend constexpr bool
> - operator<=(const _Iterator& __x, const _Iterator& __y)
> - requires __detail::__all_random_access<_Const, _Vs...>
> - { return !(__y < __x); }
> -
> - friend constexpr bool
> - operator>=(const _Iterator& __x, const _Iterator& __y)
> - requires __detail::__all_random_access<_Const, _Vs...>
> - { return !(__x < __y); }
> -
> friend constexpr auto
> operator<=>(const _Iterator& __x, const _Iterator& __y)
> requires __detail::__all_random_access<_Const, _Vs...>
> - && (three_way_comparable<iterator_t<__detail::__maybe_const_t<_Const, _Vs>>> && ...)
> { return __x._M_current <=> __y._M_current; }
>
> friend constexpr _Iterator
> @@ -5008,29 +4987,9 @@ namespace views::__adaptor
> requires equality_comparable<__ziperator<_Const>>
> { return __x._M_inner == __y._M_inner; }
>
> - friend constexpr bool
> - operator<(const _Iterator& __x, const _Iterator& __y)
> - requires random_access_range<_Base<_Const>>
> - { return __x._M_inner < __y._M_inner; }
> -
> - friend constexpr bool
> - operator>(const _Iterator& __x, const _Iterator& __y)
> - requires random_access_range<_Base<_Const>>
> - { return __x._M_inner > __y._M_inner; }
> -
> - friend constexpr bool
> - operator<=(const _Iterator& __x, const _Iterator& __y)
> - requires random_access_range<_Base<_Const>>
> - { return __x._M_inner <= __y._M_inner; }
> -
> - friend constexpr bool
> - operator>=(const _Iterator& __x, const _Iterator& __y)
> - requires random_access_range<_Base<_Const>>
> - { return __x._M_inner >= __y._M_inner; }
> -
> friend constexpr auto
> operator<=>(const _Iterator& __x, const _Iterator& __y)
> - requires random_access_range<_Base<_Const>> && three_way_comparable<__ziperator<_Const>>
> + requires random_access_range<_Base<_Const>>
> { return __x._M_inner <=> __y._M_inner; }
>
> friend constexpr _Iterator
> --
> 2.37.2.382.g795ea8776b
>
@@ -4616,30 +4616,9 @@ namespace views::__adaptor
}(make_index_sequence<sizeof...(_Vs)>{});
}
- friend constexpr bool
- operator<(const _Iterator& __x, const _Iterator& __y)
- requires __detail::__all_random_access<_Const, _Vs...>
- { return __x._M_current < __y._M_current; }
-
- friend constexpr bool
- operator>(const _Iterator& __x, const _Iterator& __y)
- requires __detail::__all_random_access<_Const, _Vs...>
- { return __y < __x; }
-
- friend constexpr bool
- operator<=(const _Iterator& __x, const _Iterator& __y)
- requires __detail::__all_random_access<_Const, _Vs...>
- { return !(__y < __x); }
-
- friend constexpr bool
- operator>=(const _Iterator& __x, const _Iterator& __y)
- requires __detail::__all_random_access<_Const, _Vs...>
- { return !(__x < __y); }
-
friend constexpr auto
operator<=>(const _Iterator& __x, const _Iterator& __y)
requires __detail::__all_random_access<_Const, _Vs...>
- && (three_way_comparable<iterator_t<__detail::__maybe_const_t<_Const, _Vs>>> && ...)
{ return __x._M_current <=> __y._M_current; }
friend constexpr _Iterator
@@ -5008,29 +4987,9 @@ namespace views::__adaptor
requires equality_comparable<__ziperator<_Const>>
{ return __x._M_inner == __y._M_inner; }
- friend constexpr bool
- operator<(const _Iterator& __x, const _Iterator& __y)
- requires random_access_range<_Base<_Const>>
- { return __x._M_inner < __y._M_inner; }
-
- friend constexpr bool
- operator>(const _Iterator& __x, const _Iterator& __y)
- requires random_access_range<_Base<_Const>>
- { return __x._M_inner > __y._M_inner; }
-
- friend constexpr bool
- operator<=(const _Iterator& __x, const _Iterator& __y)
- requires random_access_range<_Base<_Const>>
- { return __x._M_inner <= __y._M_inner; }
-
- friend constexpr bool
- operator>=(const _Iterator& __x, const _Iterator& __y)
- requires random_access_range<_Base<_Const>>
- { return __x._M_inner >= __y._M_inner; }
-
friend constexpr auto
operator<=>(const _Iterator& __x, const _Iterator& __y)
- requires random_access_range<_Base<_Const>> && three_way_comparable<__ziperator<_Const>>
+ requires random_access_range<_Base<_Const>>
{ return __x._M_inner <=> __y._M_inner; }
friend constexpr _Iterator