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.
This commit is contained in:
Patrick Palka 2021-05-06 09:11:44 -04:00
parent 08f3287eef
commit eb1aa9ad2a

View File

@ -1182,9 +1182,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
@ -1450,9 +1449,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
@ -3386,8 +3384,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