gcc/libstdc++-v3/include
Jonathan Wakely 8edb614205 libstdc++: Make __gnu_cxx::sequence_buffer move-aware [PR101542]
The PR explains that Clang trunk now selects a different constructor
when a non-const sequence_buffer is returned in a context where it
qualifies as an implicitly-movable entity. Because lookup is first
performed using an rvalue, the sequence_buffer(const sequence_buffer&)
constructor gets chosen, which makes a copy instead of a "pseudo-move"
via the sequence_buffer(sequence_buffer&) constructor. The problem isn't
seen with GCC because as noted in the r11-2412 commit log, GCC actually
implements a slightly modified rule that avoids breaking exactly this
type of code.

This patch adds a move constructor to sequence_buffer, so that implicit
or explicit moves will have the same effect, calling the
sequence_buffer(sequence_buffer&) constructor. A move assignment
operator is also added to make move assignment work similarly.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	PR libstdc++/101542
	* include/ext/rope (sequence_buffer): Add move constructor and
	move assignment operator.
	* testsuite/ext/rope/101542.cc: New test.
2021-07-21 17:20:37 +01:00
..
backward
bits libstdc++: fix is_default_constructible for hash containers [PR 100863] 2021-07-20 16:22:26 +01:00
c
c_compatibility
c_global libstdc++: Add nodiscard attribute to cast-like functions 2021-04-06 16:43:25 +01:00
c_std
debug libstdc++: [_GLIBCXX_DEBUG] Enhance rendering of assert message 2021-05-26 21:50:17 +02:00
decimal libstdc++: Fix doxygen markup for group close commands 2021-04-06 16:43:24 +01:00
experimental libstdc++: Improvements to Doxygen markup 2021-07-01 18:45:48 +01:00
ext libstdc++: Make __gnu_cxx::sequence_buffer move-aware [PR101542] 2021-07-21 17:20:37 +01:00
parallel
precompiled
pstl
std libstdc++: Improve diagnostics for std::get with invalid tuple index 2021-07-16 22:24:34 +01:00
tr1 libstdc++: Fix even more doxygen markup for group close commands 2021-04-09 13:09:23 +01:00
tr2 libstdc++: Fix doxygen markup for group close commands 2021-04-06 16:43:24 +01:00
Makefile.am libstdc++: Refactor/cleanup of C++20 atomic wait implementation 2021-04-20 15:14:58 +01:00
Makefile.in libstdc++: Refactor/cleanup of C++20 atomic wait implementation 2021-04-20 15:14:58 +01:00