https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64903

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-02-02
     Ever confirmed|0                           |1

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I notice that libc++ has the same bug.

I think the problem is that we end up testing the partition point twice. Here's
a completely untested patch that avoids that:

--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -583,6 +583,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                   _Predicate __pred)
     {
       __first = std::find_if_not(__first, __last, __pred);
+      if (__first == __last)
+       return true;
+      std::advance(__first, 1);
       return std::none_of(__first, __last, __pred);
     }

Reply via email to