gcc/libstdc++-v3/include
Jonathan Wakely 86a57ce103 Implement LWG 2904 for std::variant assignment
* include/std/variant (__variant_construct): Use template parameter
	type instead of equivalent decltype-specifier.
	(_Move_ctor_base<false, Types...>::_Move_ctor_base(_Move_ctor_base&&)):
	Replace forward with move.
	(_Move_ctor_base<false, Types...>::_M_destructive_move)
	(_Move_ctor_base<false, Types...>::_M_destructive_copy)
	(_Move_ctor_base<true, Types...>::_M_destructive_move)
	(_Move_ctor_base<true, Types...>::_M_destructive_copy): Only set the
	index after construction succeeds.
	(_Copy_assign_base<false, Types...>::operator=): Remove redundant
	if-constexpr checks that are always true. Use __remove_cvref_t instead
	of remove_reference so that is_nothrow_move_constructible check
	doesn't use a const rvalue parameter. In the potentially-throwing case
	construct a temporary and move assign it, as per LWG 2904.
	(_Move_assign_base<false, Types...>::operator=): Remove redundant
	if-constexpr checks that are always true. Use emplace as per LWG 2904.
	(variant::operator=(T&&)): Only use emplace conditionally, otherwise
	construct a temporary and move assign from it, as per LWG 2904.
	* testsuite/20_util/variant/exception_safety.cc: Check that
	assignment operators have strong exception safety guarantee.

From-SVN: r270525
2019-04-24 00:01:12 +01:00
..
backward PR libstdc++/88066 Use <> for includes not "" 2019-03-21 12:07:10 +00:00
bits Fix std::variant regression caused by never-valueless optimization 2019-04-23 10:55:33 +01:00
c Update copyright years. 2019-01-01 13:31:55 +01:00
c_compatibility In C++17 <math.h> should not put special functions in global namespace 2019-03-21 14:03:56 +00:00
c_global Define midpoint and lerp functions for C++20 (P0811R3) 2019-03-05 18:37:24 +00:00
c_std Update copyright years. 2019-01-01 13:31:55 +01:00
debug PR libstdc++/87431 re-adjust never-valueless optimizations 2019-04-05 17:56:09 +01:00
decimal Update copyright years. 2019-01-01 13:31:55 +01:00
experimental PR libstdc++/89460 Fix Networking TS test failures on HP-UX 2019-03-11 16:28:11 +00:00
ext Disambiguate __gnu_cxx::append_ partial specialization 2019-02-22 01:15:58 +00:00
parallel PR libstdc++/88607 replace or remove unnecessary UTF-8 characters 2019-01-03 20:38:11 +00:00
precompiled Update copyright years. 2019-01-01 13:31:55 +01:00
profile Fix after P0600. 2019-01-21 11:47:30 +00:00
pstl Cleanup algorithm implementations 2019-04-20 22:45:58 +00:00
std Implement LWG 2904 for std::variant assignment 2019-04-24 00:01:12 +01:00
tr1 PR libstdc++/88066 Use <> for includes not "" 2019-03-21 12:07:10 +00:00
tr2 Fix after P0600. 2019-01-21 11:47:30 +00:00
Makefile.am Integrate C++17 parallel algorithms 2019-03-21 23:48:49 +00:00
Makefile.in Integrate C++17 parallel algorithms 2019-03-21 23:48:49 +00:00