diff --git a/doc/container.qbk b/doc/container.qbk index ebd0ead..1bf1598 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -1221,6 +1221,8 @@ use [*Boost.Container]? There are several reasons for that: * [@https://svn.boost.org/trac/boost/ticket/12749 Trac #12749: ['"container::pmr::polymorphic_allocator compilation error"]]. * [@https://svn.boost.org/trac/boost/ticket/12915 Trac #12915: ['"Buffer overflow in boost::container::vector (affects flat_set)"]]. * [@https://github.com/boostorg/container/pull/45 GitHub #45: ['"emplace_back must return reference to back(), not to *end()"]]. + * [@https://github.com/boostorg/container/pull/46 GitHub #46: ['"Fix use of propagate_on_container_swap"]]. + [endsect] [section:release_notes_boost_1_63_00 Boost 1.63 Release] diff --git a/include/boost/container/node_handle.hpp b/include/boost/container/node_handle.hpp index 300b471..c46313c 100644 --- a/include/boost/container/node_handle.hpp +++ b/include/boost/container/node_handle.hpp @@ -131,6 +131,9 @@ class node_handle nallocator_type &node_alloc() { return *static_cast(m_nalloc_storage.address()); } + const nallocator_type &node_alloc() const + { return *static_cast(m_nalloc_storage.address()); } + node_pointer release() { node_pointer p(m_ptr); @@ -323,7 +326,7 @@ class node_handle if(was_nh_non_null){ if(was_this_non_null){ - if(ator_traits::propagate_on_container_swap){ + if(ator_traits::propagate_on_container_swap::value){ ::boost::adl_move_swap(this->node_alloc(), nh.node_alloc()); } }