]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Implement LWG 3517/3520 for join_view/transform_view
authorPatrick Palka <ppalka@redhat.com>
Wed, 5 May 2021 16:07:32 +0000 (12:07 -0400)
committerPatrick Palka <ppalka@redhat.com>
Wed, 5 May 2021 16:09:13 +0000 (12:09 -0400)
libstdc++-v3/ChangeLog:

* include/std/ranges (transform_view::_Iterator::iter_swap):
Remove as per LWG 3520.
(join_view::_Iterator::iter_swap): Add indirectly_swappable
constraint as per LWG 3517.

(cherry picked from commit 2663727d853438ee4d67b200a08f94a318745486)

libstdc++-v3/include/std/ranges

index 606ce81f824a48eb7da0c34accf6a249a41e35f2..af3c108bec89039502020bf999407cec4a3fe2af 100644 (file)
@@ -1578,12 +1578,6 @@ namespace views::__adaptor
              return *__i;
          }
 
-         friend constexpr void
-         iter_swap(const _Iterator& __x, const _Iterator& __y)
-           noexcept(noexcept(ranges::iter_swap(__x._M_current, __y._M_current)))
-           requires indirectly_swappable<_Base_iter>
-         { return ranges::iter_swap(__x._M_current, __y._M_current); }
-
          friend _Iterator<!_Const>;
          template<bool> friend struct _Sentinel;
        };
@@ -2460,6 +2454,7 @@ namespace views::__adaptor
          friend constexpr void
          iter_swap(const _Iterator& __x, const _Iterator& __y)
            noexcept(noexcept(ranges::iter_swap(__x._M_inner, __y._M_inner)))
+           requires indirectly_swappable<_Inner_iter>
          { return ranges::iter_swap(__x._M_inner, __y._M_inner); }
 
          friend _Iterator<!_Const>;