gcc/libstdc++-v3/include
Jonathan Wakely d8d9b83b33 PR libstdc++/58265 implement LWG 2063 for COW strings
For COW strings the default constructor does not allocate when
_GLIBCXX_FULLY_DYNAMIC_STRING == 0, so can be noexcept. The move
constructor and swap do not allocate when the allocators are equal, so
add conditional noexcept using allocator_traits::is_always_equal.

	PR libstdc++/58265
	* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
	[_GLIBCXX_FULLY_DYNAMIC_STRING==0] (basic_string::basic_string()):
	Add GLIBCXX_NOEXCEPT.
	(basic_string::operator=(basic_string&&)): Add _GLIBCXX_NOEXCEPT_IF
	to depend on the allocator's is_always_equal property (LWG 2063).
	(basic_string::swap(basic_string&)): Likewise.
	* include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
	(basic_string::swap(basic_string&)): Likewise.
	* testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
	Check is_nothrow_move_assignable.
	* testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
	Check is_nothrow_move_assignable.
	* testsuite/21_strings/basic_string/cons/char/
	noexcept_move_construct.cc: Likewise.
	* testsuite/21_strings/basic_string/cons/wchar_t/
	noexcept_move_construct.cc: Likewise.

From-SVN: r262443
2018-07-05 16:56:06 +01:00
..
backward P0935R0 Eradicating unnecessarily explicit default constructors 2018-06-14 15:12:24 +01:00
bits PR libstdc++/58265 implement LWG 2063 for COW strings 2018-07-05 16:56:06 +01:00
c Update copyright years. 2018-01-03 11:03:58 +01:00
c_compatibility Update copyright years. 2018-01-03 11:03:58 +01:00
c_global PR libstdc++/85729 add linkage specifications to headers 2018-05-10 13:35:45 +01:00
c_std Update copyright years. 2018-01-03 11:03:58 +01:00
debug re PR libstdc++/86272 (__gnu_debug::string uses undefined __glibcxx_check_insert_range2) 2018-07-04 18:13:11 +00:00
decimal Update copyright years. 2018-01-03 11:03:58 +01:00
experimental Add experimental::sample and experimental::shuffle from N4531 2018-06-25 17:23:49 +01:00
ext LWG 3035. std::allocator's constructors should be constexpr 2018-06-18 16:47:07 +01:00
parallel Update copyright years. 2018-01-03 11:03:58 +01:00
precompiled P0556R3 Integral power-of-2 operations, P0553R2 Bit operations 2018-07-03 22:04:45 +01:00
profile Update copyright years. 2018-01-03 11:03:58 +01:00
std P0646R1 Improving the Return Value of Erase-Like Algorithms I 2018-07-04 21:15:01 +01:00
tr1 PR libstdc++/83140 - assoc_legendre returns negated value when m is odd 2018-05-10 13:59:52 +00:00
tr2 Update copyright years. 2018-01-03 11:03:58 +01:00
Makefile.am P0556R3 Integral power-of-2 operations, P0553R2 Bit operations 2018-07-03 22:04:45 +01:00
Makefile.in P0556R3 Integral power-of-2 operations, P0553R2 Bit operations 2018-07-03 22:04:45 +01:00