libstdc++: Implement LWG 3533 changes to foo_view::iterator::base()

libstdc++-v3/ChangeLog:

	* include/std/ranges (filter_view::_Iterator::base): Make the
	const& overload unconstrained and return a const reference as
	per LWG 3533.  Make unconditionally noexcept.
	(transform_view::_Iterator::base): Likewise.
	(elements_view::_Iterator::base): Likewise.

(cherry picked from commit eb1aa9ad2a)
This commit is contained in:
Patrick Palka 2021-05-06 09:11:44 -04:00
parent 048eb89a1e
commit e3804ba98f

View File

@ -1263,9 +1263,8 @@ namespace views::__adaptor
_M_parent(__parent)
{ }
constexpr _Vp_iter
base() const &
requires copyable<_Vp_iter>
constexpr const _Vp_iter&
base() const & noexcept
{ return _M_current; }
constexpr _Vp_iter
@ -1531,9 +1530,8 @@ namespace views::__adaptor
: _M_current(std::move(__i._M_current)), _M_parent(__i._M_parent)
{ }
constexpr _Base_iter
base() const &
requires copyable<_Base_iter>
constexpr const _Base_iter&
base() const & noexcept
{ return _M_current; }
constexpr _Base_iter
@ -3407,8 +3405,8 @@ namespace views::__adaptor
: _M_base(std::move(base))
{ }
constexpr _Vp
base() const& requires copy_constructible<_Vp>
constexpr const _Vp&
base() const & noexcept
{ return _M_base; }
constexpr _Vp