diff options
author | Nina Dinka Ranns <dinka.ranns@gmail.com> | 2019-05-30 19:48:48 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2019-05-30 20:48:48 +0100 |
commit | 046af809f31e24d378a78820619cb0788afd62f9 (patch) | |
tree | c88ec42e02542b860de151cb357fe16d33466a2b /libstdc++-v3/include/bits/basic_string.tcc | |
parent | 608f8e107d7953c5f1302c54e6301964f7168c97 (diff) | |
download | gcc-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.tcc | 4 |
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()); |