summaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/bits/basic_string.tcc
diff options
context:
space:
mode:
authorNina Dinka Ranns <dinka.ranns@gmail.com>2019-05-30 19:48:48 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2019-05-30 20:48:48 +0100
commit046af809f31e24d378a78820619cb0788afd62f9 (patch)
treec88ec42e02542b860de151cb357fe16d33466a2b /libstdc++-v3/include/bits/basic_string.tcc
parent608f8e107d7953c5f1302c54e6301964f7168c97 (diff)
downloadgcc-046af809f31e24d378a78820619cb0788afd62f9.tar.gz
LWG2788 basic_string spurious use of a default constructible allocator
This only change the cxx11 basic_string, because COW strings don't correctly propagate allocators anyway. 2019-05-30 Nina Dinka Ranns <dinka.ranns@gmail.com> LWG2788 basic_string spurious use of a default constructible allocator * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI] (basic_string::_M_replace_dispatch): Construct temporary string with the current allocator. * testsuite/21_strings/basic_string/allocator/char/lwg2788.cc: New. * testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc: New. From-SVN: r271789
Diffstat (limited to 'libstdc++-v3/include/bits/basic_string.tcc')
-rw-r--r--libstdc++-v3/include/bits/basic_string.tcc4
1 files changed, 3 insertions, 1 deletions
diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
index e2315cb1467..ab986a6c827 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -381,7 +381,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_InputIterator __k1, _InputIterator __k2,
std::__false_type)
{
- const basic_string __s(__k1, __k2);
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 2788. unintentionally require a default constructible allocator
+ const basic_string __s(__k1, __k2, this->get_allocator());
const size_type __n1 = __i2 - __i1;
return _M_replace(__i1 - begin(), __n1, __s._M_data(),
__s.size());