This is the mail archive of the gcc-bugs@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]

[Bug libstdc++/55409] std::list not properly wrapping access to custom allocator through allocator_traits


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

--- Comment #12 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Author: redi
Date: Wed Jun 17 20:36:42 2015
New Revision: 224580

URL: https://gcc.gnu.org/viewcvs?rev=224580&root=gcc&view=rev
Log:
C++11 allocator support for std::list.

        PR libstdc++/55409
        * include/bits/list.tcc (_List_base::_M_clear()): Use allocator traits.
        (list::list(const list&)): Use allocator propagation trait. Use
        _M_assign_dispatch to copy elements.
        * include/bits/stl_list.h (_List_node): Use __aligned_membuf in C++11.
        (_List_node::_M_valptr()): Add accessor for stored value.
        (_List_iterator, _List_const_iterator, _List_base): Use _M_valptr().
        (_List_base, list): Use allocator traits.
        (_List_base::_M_get_Tp_allocator, _List_base::get_allocator): Remove.
        (_List_base::_M_move_nodes): New function.
        (_List_base(_List_base&&)): Use _M_move_nodes.
        (_List_base(_List_base&&, _Node_alloc_type&&)): New constructor.
        (list::_M_create_node, list::_M_erase, list::max_size): Use allocator
        traits.
        (list(size_type)): Add allocator parameter.
        (list(const list&)): Use allocator propagation trait.
        (list(const list&, const allocator_type&)): New constructor.
        (list(list&&, const allocator_type&)): Likewise.
        (list::operator=(list&&), list::swap(list&)): Use allocator
        propagation traits.
        (list::_M_move_assign): New functions.
        * include/debug/list: Add allocator-extended constructors.
        * include/profile/list: Likewise.
        * python/libstdcxx/v6/printers.py (get_value_from_list_node): New
        function to get value from _List_node.
        (StdListPrinter): Use get_value_from_list_node.
        * testsuite/23_containers/list/allocator/copy.cc: New.
        * testsuite/23_containers/list/allocator/copy_assign.cc: New.
        * testsuite/23_containers/list/allocator/minimal.cc: New.
        * testsuite/23_containers/list/allocator/move.cc: New.
        * testsuite/23_containers/list/allocator/move_assign.cc: New.
        * testsuite/23_containers/list/allocator/noexcept.cc: New.
        * testsuite/23_containers/list/allocator/swap.cc: New.
        * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
        Adjust dg-prune-output line number.
        * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
        Likewise.
        * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
        Likewise.

Added:
    trunk/libstdc++-v3/testsuite/23_containers/list/allocator/
    trunk/libstdc++-v3/testsuite/23_containers/list/allocator/copy.cc
    trunk/libstdc++-v3/testsuite/23_containers/list/allocator/copy_assign.cc
    trunk/libstdc++-v3/testsuite/23_containers/list/allocator/minimal.cc
    trunk/libstdc++-v3/testsuite/23_containers/list/allocator/move.cc
    trunk/libstdc++-v3/testsuite/23_containers/list/allocator/move_assign.cc
    trunk/libstdc++-v3/testsuite/23_containers/list/allocator/noexcept.cc
    trunk/libstdc++-v3/testsuite/23_containers/list/allocator/swap.cc
Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/bits/list.tcc
    trunk/libstdc++-v3/include/bits/stl_list.h
    trunk/libstdc++-v3/include/debug/list
    trunk/libstdc++-v3/include/profile/list
    trunk/libstdc++-v3/python/libstdcxx/v6/printers.py
   
trunk/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
   
trunk/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc


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