https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29988
--- Comment #2 from François Dumont <fdumont at gcc dot gnu.org> --- Author: fdumont Date: Wed Sep 24 19:55:35 2014 New Revision: 215568 URL: https://gcc.gnu.org/viewcvs?rev=215568&root=gcc&view=rev Log: 2014-09-24 François Dumont <fdum...@gcc.gnu.org> PR libstdc++/29988 * include/bits/stl_tree.h (_Rb_tree_reuse_or_alloc_node<>): New. (_Rb_tree_alloc_node<>): New. (_Rb_tree<>::operator=(_Rb_tree<>&&)): New. (_Rb_tree<>::_M_assign_unique): New. (_Rb_tree<>::_M_assign_equal): New. (_Rb_tree<>): Adapt to reuse allocated nodes as much as possible. * include/bits/stl_map.h (std::map<>::operator=(std::map<>&&)): Default implementation. (std::map<>::operator=(initializer_list<>)): Adapt to use _Rb_tree::_M_assign_unique. * include/bits/stl_multimap.h (std::multimap<>::operator=(std::multimap<>&&)): Default implementation. (std::multimap<>::operator=(initializer_list<>)): Adapt to use _Rb_tree::_M_assign_equal. * include/bits/stl_set.h (std::set<>::operator=(std::set<>&&)): Default implementation. (std::set<>::operator=(initializer_list<>)): Adapt to use _Rb_tree::_M_assign_unique. * include/bits/stl_multiset.h (std::multiset<>::operator=(std::multiset<>&&)): Default implementation. (std::multiset<>::operator=(initializer_list<>)): Adapt to use _Rb_tree::_M_assign_equal. * testsuite/23_containers/map/allocator/copy_assign.cc (test03): New. * testsuite/23_containers/map/allocator/init-list.cc: New. * testsuite/23_containers/map/allocator/move_assign.cc (test03): New. * testsuite/23_containers/multimap/allocator/copy_assign.cc (test03): New. * testsuite/23_containers/multimap/allocator/init-list.cc: New. * testsuite/23_containers/multimap/allocator/move_assign.cc (test03): New. * testsuite/23_containers/multiset/allocator/copy_assign.cc (test03): New. * testsuite/23_containers/multiset/allocator/init-list.cc: New. * testsuite/23_containers/multiset/allocator/move_assign.cc (test03): New. * testsuite/23_containers/set/allocator/copy_assign.cc (test03): New. * testsuite/23_containers/set/allocator/init-list.cc: New. * testsuite/23_containers/set/allocator/move_assign.cc (test03): New. Added: trunk/libstdc++-v3/testsuite/23_containers/map/allocator/init-list.cc trunk/libstdc++-v3/testsuite/23_containers/multimap/allocator/init-list.cc trunk/libstdc++-v3/testsuite/23_containers/multiset/allocator/init-list.cc trunk/libstdc++-v3/testsuite/23_containers/set/allocator/init-list.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/stl_map.h trunk/libstdc++-v3/include/bits/stl_multimap.h trunk/libstdc++-v3/include/bits/stl_multiset.h trunk/libstdc++-v3/include/bits/stl_set.h trunk/libstdc++-v3/include/bits/stl_tree.h trunk/libstdc++-v3/testsuite/23_containers/map/allocator/copy_assign.cc trunk/libstdc++-v3/testsuite/23_containers/map/allocator/move_assign.cc trunk/libstdc++-v3/testsuite/23_containers/multimap/allocator/copy_assign.cc trunk/libstdc++-v3/testsuite/23_containers/multimap/allocator/move_assign.cc trunk/libstdc++-v3/testsuite/23_containers/multiset/allocator/copy_assign.cc trunk/libstdc++-v3/testsuite/23_containers/multiset/allocator/move_assign.cc trunk/libstdc++-v3/testsuite/23_containers/set/allocator/copy_assign.cc trunk/libstdc++-v3/testsuite/23_containers/set/allocator/move_assign.cc