On 25/02/20 12:40 +0000, Jonathan Wakely wrote: >The std::move and std::move_backward algorithms dispatch to the >std::__memmove helper when appropriate. That function uses a >pointer-to-const for the source values, preventing them from being >moved. The two callers of that function have the same problem. > >Rather than altering __memmove and its callers to work with const or >non-const source pointers, this takes a more conservative approach of >casting away the const at the point where we want to do a move >assignment. This relies on the fact that we only use __memmove when the >type is trivially copyable, so we know the move assignment doesn't alter >the source anyway. > > PR libstdc++/93872 > * include/bits/stl_algobase.h (__memmove): Cast away const before > doing move assignment. > * testsuite/25_algorithms/move/93872.cc: New test. > * testsuite/25_algorithms/move_backward/93872.cc: New test. > Oops, I forgot to 'git add' one of the new tests. Tested x86_64-linux, committed to master.