[gcc(refs/users/ppalka/heads/libstdcxx-ranges-algos-nieblification)] Remove ranges::__find_end

Patrick Palka ppalka@gcc.gnu.org
Thu Feb 13 20:55:00 GMT 2020


https://gcc.gnu.org/g:62eabfc7ea76de449c1c8fadd4bbcf74f43a294b

commit 62eabfc7ea76de449c1c8fadd4bbcf74f43a294b
Author: Patrick Palka <ppalka@redhat.com>
Date:   Thu Feb 13 10:55:10 2020 -0500

    Remove ranges::__find_end

Diff:
---
 libstdc++-v3/include/bits/ranges_algo.h | 61 ++++++++++++++-------------------
 1 file changed, 25 insertions(+), 36 deletions(-)

diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index 84a02ca..efc1f0a 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -513,40 +513,7 @@ namespace ranges
 			      std::move(__pred), std::move(__proj));
     }
 
-  template<forward_iterator _Iter1, sentinel_for<_Iter1> _Sent1,
-	   forward_iterator _Iter2, sentinel_for<_Iter2> _Sent2,
-	   typename _Pred = ranges::equal_to,
-	   typename _Proj1 = identity, typename _Proj2 = identity>
-    requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2>
-    constexpr subrange<_Iter1>
-    __find_end(_Iter1 __first1, _Sent1 __last1,
-	       _Iter2 __first2, _Sent2 __last2,
-	       _Pred __pred, _Proj1 __proj1, _Proj2 __proj2)
-    {
-      auto __i = ranges::next(__first1, __last1);
-      if (__first2 == __last2)
-	return {__i, __i};
 
-      auto __result_begin = __i;
-      auto __result_end = __i;
-      for (;;)
-	{
-	  auto __new_range = ranges::search(__first1, __last1,
-					    __first2, __last2,
-					    __pred, __proj1, __proj2);
-	  auto __new_result_begin = ranges::begin(__new_range);
-	  auto __new_result_end = ranges::end(__new_range);
-	  if (__new_result_begin == __last1)
-	    return {__result_begin, __result_end};
-	  else
-	    {
-	      __result_begin = __new_result_begin;
-	      __result_end = __new_result_end;
-	      __first1 = __result_begin;
-	      ++__first1;
-	    }
-	}
-    }
 
   template<forward_iterator _Iter1, sentinel_for<_Iter1> _Sent1,
 	   forward_iterator _Iter2, sentinel_for<_Iter2> _Sent2,
@@ -578,9 +545,31 @@ namespace ranges
 	    return {__result_first, __result_last};
 	}
       else
-	return ranges::__find_end(__first1, __last1, __first2, __last2,
-				  std::move(__pred),
-				  std::move(__proj1), std::move(__proj2));
+	{
+	  auto __i = ranges::next(__first1, __last1);
+	  if (__first2 == __last2)
+	    return {__i, __i};
+
+	  auto __result_begin = __i;
+	  auto __result_end = __i;
+	  for (;;)
+	    {
+	      auto __new_range = ranges::search(__first1, __last1,
+						__first2, __last2,
+						__pred, __proj1, __proj2);
+	      auto __new_result_begin = ranges::begin(__new_range);
+	      auto __new_result_end = ranges::end(__new_range);
+	      if (__new_result_begin == __last1)
+		return {__result_begin, __result_end};
+	      else
+		{
+		  __result_begin = __new_result_begin;
+		  __result_end = __new_result_end;
+		  __first1 = __result_begin;
+		  ++__first1;
+		}
+	    }
+	}
     }
 
   template<forward_range _Range1, forward_range _Range2,



More information about the Libstdc++-cvs mailing list