2014-01-08 François Dumont <fdumont@gcc.gnu.org>
commitde7466cfbe7bfd81845e88fde48f0b2d1216edb0
authorfdumont <fdumont@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Jan 2014 20:57:57 +0000 (8 20:57 +0000)
committerfdumont <fdumont@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Jan 2014 20:57:57 +0000 (8 20:57 +0000)
treef55b55ed07f3d73ecc9083e0584eae03f77c1141
parent8a08427dcaa7a3a679a4ac0a832f2b8beacefac4
2014-01-08  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/stl_vector.h (std::vector<>::_M_move_assign): Pass
*this allocator instance when building temporary vector instance
so that *this allocator does not get moved.
* include/debug/safe_base.h
(_Safe_sequence_base(_Safe_sequence_base&&)): New.
* include/debug/vector (__gnu_debug::vector<>(vector&&)): Use new
move constructor from _Safe_sequence_base.
(__gnu_debug::vector<>(vector&&, const allocator_type&)): Swap
safe iterators if the instance is moved.
(__gnu_debug::vector<>::operator=(vector&&)): Likewise.
* testsuite/23_containers/vector/allocator/move.cc (test01): Add
check on a vector iterator.
* testsuite/23_containers/vector/allocator/move_assign.cc
(test02): Likewise.
(test03): New, test with a non-propagating allocator.
* testsuite/23_containers/vector/debug/move_assign_neg.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206444 138bc75d-0d04-0410-961f-82ee72b054a4
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_vector.h
libstdc++-v3/include/debug/safe_base.h
libstdc++-v3/include/debug/vector
libstdc++-v3/testsuite/23_containers/vector/allocator/move.cc
libstdc++-v3/testsuite/23_containers/vector/allocator/move_assign.cc
libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc [copied from libstdc++-v3/testsuite/23_containers/vector/allocator/move.cc with 56% similarity]