[PATCH] PR libstdc++/83328 add correct basic_string::insert for initializer_list

Jonathan Wakely jwakely@redhat.com
Fri Jun 22 13:13:00 GMT 2018


On 22/06/18 13:54 +0100, Jonathan Wakely wrote:
>On 22/06/18 14:51 +0200, Rainer Orth wrote:
>>Hi Jonathan,
>>
>>>The SSO basic_string has a non-standard insert(iterator, initializer_list)
>>>overload, from a C++0x draft. This adds the correct overload, while also
>>>preserving the old one so that the old symbol is still exported from the
>>>library.
>>>
>>>The COW basic_string doesn't have any of the C++11 changes to the insert
>>>overloads (they all still have non-const iterator parameters and the
>>>ones that should return an iterator still return void). This doesn't
>>>make any change to the COW string.
>>>
>>>	PR libstdc++/83328
>>>	* acinclude.m4 (libtool_VERSION): Bump to 6:26:0.
>>>	* config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 and export new symbol.
>>>	* configure: Regenerate.
>>>	* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
>>>	(basic_string::insert(const_iterator, initializer_list<C>)): Add.
>>>	[_GLIBCXX_USE_CXX11_ABI && !_GLIBCXX_DEFINING_STRING_INSTANTIATIONS]
>>>	(basic_string::insert(iterator, initializer_list<C>)): Suppress
>>>	definition.
>>>	* include/debug/string (basic_string::insert(iterator, C)): Change
>>>	first parameter to const_iterator.
>>>	(basic_string::insert(iterator, size_type, C)): Likewise. Change
>>>	return type to iterator.
>>>	(basic_string::insert(iterator, InputIterator, InputIterator)):
>>>	Likewise.
>>>	(basic_string::insert(iterator, initializer_list<C>)): Change first
>>>	parameter to const_iterator and return type to iterator.
>>>	* src/c++11/string-inst.cc: Extend comment.
>>>	* testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc:
>>>	New.
>>>	* testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc:
>>>	New.
>>>	* testsuite/util/testsuite_abi.cc: Add new symbol version.
>>>
>>>Tested x86_64-linux, committed to trunk.
>>
>>it seems a couple of pattners are a bit too tight now in gnu.ver: this
>>caused a couple of failures on 32-bit Solaris and subsequent tests
>>failing to link due to symbols now hidden:
>
>Oops, it's the usual mangling difference for size_t, I'll fix it
>today.

I'm testing this ...

-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.txt
Type: text/x-patch
Size: 2411 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20180622/b290eb84/attachment.bin>


More information about the Libstdc++ mailing list