PR libstdc++/83328 add correct basic_string::insert for initializer_list
commit26909ed4db7a4dc593f3ed0708f351b6513615ca
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 21 Jun 2018 22:01:25 +0000 (21 22:01 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 21 Jun 2018 22:01:25 +0000 (21 22:01 +0000)
treeeca3dd7424fe9f58436af970b91afff468a6e0c2
parent6fe661f640849a649f37b7aaa35bb364b28eb639
PR libstdc++/83328 add correct basic_string::insert for initializer_list

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@261866 138bc75d-0d04-0410-961f-82ee72b054a4
libstdc++-v3/ChangeLog
libstdc++-v3/acinclude.m4
libstdc++-v3/config/abi/pre/gnu.ver
libstdc++-v3/configure
libstdc++-v3/include/bits/basic_string.h
libstdc++-v3/include/debug/string
libstdc++-v3/src/c++11/string-inst.cc
libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc [new file with mode: 0644]
libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc [new file with mode: 0644]
libstdc++-v3/testsuite/util/testsuite_abi.cc