[gcc r16-6895] libstdc++: Fix std::erase_if for std::string with -D_GLIBCXX_USE_CXX11_ABI=0.
Tomasz Kaminski
tkaminsk@gcc.gnu.org
Mon Jan 19 09:18:30 GMT 2026
https://gcc.gnu.org/g:e9a62938be080e1d849f6b1e013633584ecace9b
commit r16-6895-ge9a62938be080e1d849f6b1e013633584ecace9b
Author: Tomasz Kamiński <tkaminsk@redhat.com>
Date: Mon Jan 19 10:03:08 2026 +0100
libstdc++: Fix std::erase_if for std::string with -D_GLIBCXX_USE_CXX11_ABI=0.
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.
Diff:
---
libstdc++-v3/include/bits/erase_if.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libstdc++-v3/include/bits/erase_if.h b/libstdc++-v3/include/bits/erase_if.h
index d5a5278d1282..9d14b63a289b 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();
}
More information about the Libstdc++-cvs
mailing list