http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44436

--- Comment #32 from François Dumont <fdumont at gcc dot gnu.org> 2012-09-24 
19:53:46 UTC ---
Author: fdumont
Date: Mon Sep 24 19:53:36 2012
New Revision: 191679

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=191679
Log:
2012-09-24  François Dumont  <fdum...@gcc.gnu.org>

    PR libstdc++/44436
    * include/bits/stl_tree.h
    (_Rb_tree<>::_M_insert_): Take _Base_ptr rather than
    _Const_Base_ptr.
    (_Rb_tree<>::_M_insert_node): New.
    (_Rb_tree<>::_M_get_insert_unique_pos): New, search code of
    _M_insert_unique method.
    (_Rb_tree<>::_M_insert_unique): Use latter.
    (_Rb_tree<>::_M_emplace_unique): New, likewise.
    (_Rb_tree<>::_M_get_insert_equal_pos): New, search code of
    _M_insert_equal method.
    (_Rb_tree<>::_M_insert_equal): Use latter.
    (_Rb_tree<>::_M_emplace_equal): New, likewise.
    (_Rb_tree<>::_M_get_insert_hint_unique_pos): New, search code of
    _M_insert_unique_ method.
    (_Rb_tree<>::_M_insert_unique_): Use latter.
    (_Rb_tree<>::_M_emplace_hint_unique): New, likewise.
    (_Rb_tree<>::_M_get_insert_hint_equal_pos): New, search code of
    _M_insert_equal_ method.
    (_Rb_tree<>::_M_insert_equal_): Use latter.
    (_Rb_tree<>::_M_emplace_hint_equal): New, likewise.
    (_Rb_tree<>::_M_insert_lower): Remove first _Base_ptr parameter,
    useless as always null.
    * include/bits/stl_map.h: Include <tuple> in C++11.
    (map<>::operator[](const key_type&)): Use
    _Rb_tree<>::_M_emplace_hint_unique in C++11.
    (map<>::operator[](key_type&&)): Likewise.
    (map<>::emplace): New.
    (map<>::emplace_hint): New.
    * include/bits/stl_multimap.h (multimap<>::emplace): New.
    (multimap<>::emplace_hint): New.
    * include/bits/stl_set.h (set<>::emplace): New.
    (set<>::emplace_hint): New.
    * include/bits/stl_multiset.h (multiset<>::emplace): New.
    (multiset<>::emplace_hint): New.
    * include/debug/map.h (std::__debug::map<>::emplace): New.
    (std::__debug::map<>::emplace_hint): New.
    * include/debug/multimap.h (std::__debug::multimap<>::emplace):
    New.
    (std::__debug::multimap<>::emplace_hint): New.
    * include/debug/set.h (std::__debug::set<>::emplace): New.
    (std::__debug::set<>::emplace_hint): New.
    * include/debug/multiset.h (std::__debug::multiset<>::emplace):
    New.
    (std::__debug::multiset<>::emplace_hint): New.
    * include/profile/map.h (std::__profile::map<>::emplace): New.
    (std::__profile::map<>::emplace_hint): New.
    * include/profile/multimap.h (std::__profile::multimap<>::emplace):
    New.
    (std::__profile::multimap<>::emplace_hint): New.
    * include/profile/set.h (std::__profile::set<>::emplace): New.
    (std::__profile::set<>::emplace_hint): New.
    * include/profile/multiset.h (std::__profile::multiset<>::emplace):
    New.
    (std::__profile::multiset<>::emplace_hint): New.
    * testsuite/util/testsuite_container_traits.h: Signal that emplace
    and emplace_hint are available on std::map, std::multimap,
    std::set and std::multiset in C++11.
    * testsuite/23_containers/map/operators/2.cc: New.
    * testsuite/23_containers/map/modifiers/emplace/1.cc: New.
    * testsuite/23_containers/multimap/modifiers/emplace/1.cc: New.
    * testsuite/23_containers/set/modifiers/emplace/1.cc: New.
    * testsuite/23_containers/multiset/modifiers/emplace/1.cc: New.

Added:
    trunk/libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/
    trunk/libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/1.cc
    trunk/libstdc++-v3/testsuite/23_containers/map/operators/2.cc
    trunk/libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/
    trunk/libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/1.cc
    trunk/libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/
    trunk/libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/1.cc
    trunk/libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/
    trunk/libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/1.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/include/debug/map.h
    trunk/libstdc++-v3/include/debug/multimap.h
    trunk/libstdc++-v3/include/debug/multiset.h
    trunk/libstdc++-v3/include/debug/set.h
    trunk/libstdc++-v3/include/profile/map.h
    trunk/libstdc++-v3/include/profile/multimap.h
    trunk/libstdc++-v3/include/profile/multiset.h
    trunk/libstdc++-v3/include/profile/set.h
    trunk/libstdc++-v3/testsuite/util/testsuite_container_traits.h

Reply via email to