[2/2] libstdc++: Implement LWG 3533 changes to foo_view::iterator::base()

Message ID 20210505202312.1609984-2-ppalka@redhat.com
State New
Headers show
Series
  • [1/2] libstdc++: Implement LWG 3391 changes to move/counted_iterator::base
Related show

Commit Message

Marek Polacek via Gcc-patches May 5, 2021, 8:23 p.m.
Tested on x86_64-pc-linux-gnu, does this look OK for trunk/10/11?

libstdc++-v3/ChangeLog:

	* include/std/ranges (filter_view::_Iterator::base): Make the
	const& overload return a const reference and remove its
	constraint as per LWG 3533. Make unconditionally noexcept.
	(transform_view::_Iterator::base): Likewise.
	(elements_view::_Iterator::base): Likewise.
---
 libstdc++-v3/include/std/ranges | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

-- 
2.31.1.442.g7e39198978

Comments

Marek Polacek via Gcc-patches May 6, 2021, 10:28 a.m. | #1
On 05/05/21 16:23 -0400, Patrick Palka via Libstdc++ wrote:
>Tested on x86_64-pc-linux-gnu, does this look OK for trunk/10/11?


Yes, thanks.

>libstdc++-v3/ChangeLog:

>

>	* include/std/ranges (filter_view::_Iterator::base): Make the

>	const& overload return a const reference and remove its

>	constraint as per LWG 3533. Make unconditionally noexcept.

>	(transform_view::_Iterator::base): Likewise.

>	(elements_view::_Iterator::base): Likewise.

>---

> libstdc++-v3/include/std/ranges | 14 ++++++--------

> 1 file changed, 6 insertions(+), 8 deletions(-)

>

>diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges

>index 7075fa3ae6e..bc11505c167 100644

>--- a/libstdc++-v3/include/std/ranges

>+++ b/libstdc++-v3/include/std/ranges

>@@ -1199,9 +1199,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

>@@ -1467,9 +1466,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

>@@ -3403,8 +3401,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

>-- 

>2.31.1.442.g7e39198978

>

Patch

diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 7075fa3ae6e..bc11505c167 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -1199,9 +1199,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
@@ -1467,9 +1466,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
@@ -3403,8 +3401,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