libstdc++: Implement LWG 3517/3520 for join_view/transform_view

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.
This commit is contained in:
Patrick Palka 2021-05-05 12:07:32 -04:00
parent d9937da063
commit 2663727d85

View file

@ -1581,12 +1581,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;
};
@ -2520,6 +2514,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>;