public inbox for libstdc++-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/ranger] libstdc++: Fix uses of _M_current in split_view's outer iterator
@ 2020-06-17 19:33 Aldy Hernandez
  0 siblings, 0 replies; only message in thread
From: Aldy Hernandez @ 2020-06-17 19:33 UTC (permalink / raw)
  To: gcc-cvs, libstdc++-cvs

https://gcc.gnu.org/g:0b7f1e24316cfc1f85408918d1734d3266d65089

commit 0b7f1e24316cfc1f85408918d1734d3266d65089
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Mar 10 22:15:58 2020 +0000

    libstdc++: Fix uses of _M_current in split_view's outer iterator
    
    These direct uses of _M_current should all be __current() so they are
    valid when the base type doesn't satisfy the forward_range concept.
    
            * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
            instead of _M_current.
            (split_view::_OuterIter::operator++): Likewise.

Diff:
---
 libstdc++-v3/ChangeLog          |  4 ++++
 libstdc++-v3/include/std/ranges | 14 +++++++-------
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 0c447ff0806..7197663e6a1 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,9 @@
 2020-03-10  Jonathan Wakely  <jwakely@redhat.com>
 
+	* include/std/ranges (split_view::_OuterIter::__at_end): Use __current
+	instead of _M_current.
+	(split_view::_OuterIter::operator++): Likewise.
+
 	* include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
 	(transform_view::_Iterator::operator*): Add noexcept-specifier.
 	(transform_view::_Iterator::iter_move): Inline __iter_move body here.
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 4dc7342e2f7..de120d6b55d 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -2703,9 +2703,9 @@ namespace views
 
 	  constexpr bool
 	  __at_end() const
-	  { return _M_current == ranges::end(_M_parent->_M_base); }
+	  { return __current() == ranges::end(_M_parent->_M_base); }
 
-	  // XXX: [24.7.11.3.1]
+	  // [range.split.outer] p1
 	  //  Many of the following specifications refer to the notional member
 	  //  current of outer-iterator.  current is equivalent to current_ if
 	  //  V models forward_range, and parent_->current_ otherwise.
@@ -2798,21 +2798,21 @@ namespace views
 	  operator++()
 	  {
 	    const auto __end = ranges::end(_M_parent->_M_base);
-	    if (_M_current == __end)
+	    if (__current() == __end)
 	      return *this;
 	    const auto [__pbegin, __pend] = subrange{_M_parent->_M_pattern};
 	    if (__pbegin == __pend)
-	      ++_M_current;
+	      ++__current();
 	    else
 	      do
 		{
 		  auto [__b, __p]
-		    = __detail::mismatch(std::move(_M_current), __end,
+		    = __detail::mismatch(std::move(__current()), __end,
 					 __pbegin, __pend);
-		  _M_current = std::move(__b);
+		  __current() = std::move(__b);
 		  if (__p == __pend)
 		    break;
-		} while (++_M_current != __end);
+		} while (++__current() != __end);
 	    return *this;
 	  }


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-06-17 19:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-17 19:33 [gcc/devel/ranger] libstdc++: Fix uses of _M_current in split_view's outer iterator Aldy Hernandez

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).