https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93872

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>:

https://gcc.gnu.org/g:5b904f175ff26269615f148459a8604f45880591

commit r10-6842-g5b904f175ff26269615f148459a8604f45880591
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Feb 25 12:21:44 2020 +0000

    libstdc++: Fix regression in std::move algorithm (PR 93872)

    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.

Reply via email to