This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3] fix libstdc++/52591


This allows move-assignment for std::vector<T> when T is not
MoveAssignable but the allocator is moved or equal, as a QoI
extension.  It also makes the code a bit cleaner and simpler, so I
plan to use the same pattern as I make the rest of the library meet
the allocator-aware container requirements.

        PR libstdc++/52591
        * include/bits/stl_vector.h (vector::operator=(vector&&)): Dispatch
        to _M_move_assign depending on whether allocator is moved.
        (vector::_M_move_assign): Add overloaded functions.
        * testsuite/23_containers/vector/52591.cc: New.
        * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
        Adjust dg-error line number.
        * testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc:
        Likewise.
        * testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc:
        Likewise.
        * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
        Likewise.

Tested x86_64-linux, committed to trunk.  After this has been on the
trunk for a while I plan to apply it to the 4.7 branch too.

Attachment: patch.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]