gcc/libstdc++-v3/include/std
Jonathan Wakely ef45724acd P0646R1 Improving the Return Value of Erase-Like Algorithms I
In C++2a the remove, remove_if and unique members of std::list and
std::forward_list have been changed to return the number of elements
removed. This is an ABI change for the remove members and the
non-template unique members, so an abi-tag is used to give those symbols
new mangled names in C++2a mode. For the function templates the return
type is part of the mangled name so no abi-tag is needed.

	* include/bits/forward_list.h (__cpp_lib_list_remove_return_type):
	Define.
	(forward_list::__remove_return_type): Define typedef as size_type or
	void, according to __cplusplus value.
	(_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
	empty, according to __cplusplus value.
	(forward_list::remove, forward_list::unique): Use typedef and macro
	to change return type and add abi-tag for C++2a.
	(forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
	typedef to change return type for C++2a.
	* include/bits/forward_list.tcc (_GLIBCXX20_ONLY): Define macro.
	(forward_list::remove, forward_list::remove_if<Pred>)
	(forward_list::unique<BinPred>): Return number of removed elements
	for C++2a.
	* include/bits/list.tcc (_GLIBCXX20_ONLY): Define macro.
	(list::remove, list::unique, list::remove_if<Predicate>)
	(list::unique<BinaryPredicate>): Return number of removed elements
	for C++2a.
	* include/bits/stl_list.h (__cpp_lib_list_remove_return_type): Define.
	(list::__remove_return_type): Define typedef as size_type or
	void, according to __cplusplus value.
	(_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
	empty, according to __cplusplus value.
	(list::remove, list::unique): Use typedef and macro to change return
	type and add abi-tag for C++2a.
	(list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use
	typedef to change return type for C++2a.
	* include/std/version (__cpp_lib_list_remove_return_type): Define.
	* testsuite/23_containers/forward_list/operations/
	remove_cxx20_return.cc: New.
	* testsuite/23_containers/forward_list/operations/
	unique_cxx20_return.cc: New.

From-SVN: r262423
2018-07-04 21:15:01 +01:00
..
algorithm Update copyright years. 2018-01-03 11:03:58 +01:00
any Define std::remove_cvref and std::remove_cvref_t for C++2a 2018-05-03 13:40:10 +01:00
array Update copyright years. 2018-01-03 11:03:58 +01:00
atomic Implement P0558R2 changes to std::atomic 2018-05-24 16:28:26 +01:00
bit Fix std::__rotl and std::__rotr 2018-07-04 15:31:56 +01:00
bitset Define special members as defaulted 2018-06-08 17:43:14 +01:00
charconv Update copyright years. 2018-01-03 11:03:58 +01:00
chrono LWG 3050 Fix cv-qualification of convertibility constraints 2018-06-18 19:02:24 +01:00
codecvt Update copyright years. 2018-01-03 11:03:58 +01:00
complex Define special members as defaulted 2018-06-08 17:43:14 +01:00
condition_variable Update copyright years. 2018-01-03 11:03:58 +01:00
deque Update copyright years. 2018-01-03 11:03:58 +01:00
filesystem Update copyright years. 2018-01-03 11:03:58 +01:00
forward_list Update copyright years. 2018-01-03 11:03:58 +01:00
fstream Add support for opening file streams from wide character strings 2018-05-21 18:18:35 +01:00
functional PR libstdc++/83607 specialize Boyer-Moore searchers for std::byte 2018-01-04 10:21:29 +00:00
future LWG 3039 Unnecessary decay in thread and packaged_task 2018-06-15 01:19:07 +01:00
iomanip PR libstdc++/86008 add std::quoted support for string_view 2018-06-06 07:05:07 +01:00
ios Update copyright years. 2018-01-03 11:03:58 +01:00
iosfwd Update copyright years. 2018-01-03 11:03:58 +01:00
iostream Update copyright years. 2018-01-03 11:03:58 +01:00
istream Update copyright years. 2018-01-03 11:03:58 +01:00
iterator Update copyright years. 2018-01-03 11:03:58 +01:00
limits Update copyright years. 2018-01-03 11:03:58 +01:00
list Update copyright years. 2018-01-03 11:03:58 +01:00
locale Update copyright years. 2018-01-03 11:03:58 +01:00
map Update copyright years. 2018-01-03 11:03:58 +01:00
memory Update copyright years. 2018-01-03 11:03:58 +01:00
mutex Update copyright years. 2018-01-03 11:03:58 +01:00
numeric Update copyright years. 2018-01-03 11:03:58 +01:00
optional PR libstdc++/85642 fix is_nothrow_default_constructible<optional<T>> 2018-05-04 09:57:23 +01:00
ostream Update copyright years. 2018-01-03 11:03:58 +01:00
queue Update copyright years. 2018-01-03 11:03:58 +01:00
random Update copyright years. 2018-01-03 11:03:58 +01:00
ratio Update copyright years. 2018-01-03 11:03:58 +01:00
regex Update copyright years. 2018-01-03 11:03:58 +01:00
scoped_allocator LWG 2975 ensure construct(pair<T,U>*, ...) used to construct pairs 2018-06-18 21:17:44 +01:00
set Update copyright years. 2018-01-03 11:03:58 +01:00
shared_mutex Update copyright years. 2018-01-03 11:03:58 +01:00
sstream Update copyright years. 2018-01-03 11:03:58 +01:00
stack Update copyright years. 2018-01-03 11:03:58 +01:00
stdexcept Some libstdc++ fixes for -Wdeprecated-copy. 2018-05-18 16:02:14 -04:00
streambuf Update copyright years. 2018-01-03 11:03:58 +01:00
string Update copyright years. 2018-01-03 11:03:58 +01:00
string_view Decorate string_view members with nonnull attribute 2018-06-15 17:47:55 +01:00
system_error Some libstdc++ fixes for -Wdeprecated-copy. 2018-05-18 16:02:14 -04:00
thread LWG 3039 Unnecessary decay in thread and packaged_task 2018-06-15 01:19:07 +01:00
tuple Partially revert move of std::tuple_element_t to <tuple> 2018-06-14 20:02:40 +01:00
type_traits PR libstdc++/86398 fix std::is_trivially_constructible regression 2018-07-04 10:03:18 +01:00
typeindex Update copyright years. 2018-01-03 11:03:58 +01:00
unordered_map Update copyright years. 2018-01-03 11:03:58 +01:00
unordered_set Update copyright years. 2018-01-03 11:03:58 +01:00
utility Remove unused <exception> header from <utility> 2018-06-19 18:19:16 +01:00
valarray LWG 3074 make scalar types non-deduced in valarray non-member functions 2018-06-14 20:36:54 +01:00
variant Qualify another call in <variant> 2018-05-29 18:21:31 +01:00
vector Update copyright years. 2018-01-03 11:03:58 +01:00
version P0646R1 Improving the Return Value of Erase-Like Algorithms I 2018-07-04 21:15:01 +01:00