[gcc r13-2232] libstdc++: Implement LWG 3692/3702 changes to zip_/zip_transform_view

Patrick Palka ppalka@gcc.gnu.org
Fri Aug 26 23:00:59 GMT 2022


https://gcc.gnu.org/g:d0fd62d0ff4d1e0648e11b650b4f449772663990

commit r13-2232-gd0fd62d0ff4d1e0648e11b650b4f449772663990
Author: Patrick Palka <ppalka@redhat.com>
Date:   Fri Aug 26 18:59:36 2022 -0400

    libstdc++: Implement LWG 3692/3702 changes to zip_/zip_transform_view
    
    libstdc++-v3/ChangeLog:
    
            * include/std/ranges (zip_view::_Iterator::operator<): Remove
            as per LWG 3692.
            (zip_view::_Iterator::operator>): Likewise.
            (zip_view::_Iterator::operator<=): Likewise.
            (zip_view::_Iterator::operator>=): Likewise.
            (zip_view::_Iterator::operator<=>): Remove three_way_comparable
            constraint as per LWG 3692.
            (zip_transform_view::_Iterator): Ditto as per LWG 3702.

Diff:
---
 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 d4e326ad9c6..6e2e561ed12 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
@@ -5006,29 +4985,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


More information about the Libstdc++-cvs mailing list