The __cow_string used with -D_GLIBCXX_USE_CXX11_ABI=0, does not provide
erase accepting const_iterator, so we adjust  __detail::__erase.if
(introduced in r16-6889-g3287) to call __cont.erase with mutable iterators.

libstdc++-v3/ChangeLog:

        * include/bits/erase_if.h (__detail::__erase_if): Pass mutable
        iterators to __cont.erase.
---
 libstdc++-v3/include/bits/erase_if.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Tested on x86_64-linux. Pushed to trunk.

diff --git a/libstdc++-v3/include/bits/erase_if.h 
b/libstdc++-v3/include/bits/erase_if.h
index d5a5278d128..9d14b63a289 100644
--- a/libstdc++-v3/include/bits/erase_if.h
+++ b/libstdc++-v3/include/bits/erase_if.h
@@ -58,8 +58,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                                          std::move(__pred));
        if (__removed != __end)
          {
-           __cont.erase(__niter_wrap(__cont.cbegin(), __removed),
-                        __cont.cend());
+           __cont.erase(__niter_wrap(__cont.begin(), __removed),
+                        __cont.end());
            return __osz - __ucont.size();
          }
 
-- 
2.52.0

Reply via email to