#include <boost/intrusive/detail/config_begin.hpp>
#include <boost/intrusive/pointer_traits.hpp>
-#include <boost/detail/lightweight_test.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/intrusive/detail/to_raw_pointer.hpp>
#include <boost/intrusive/detail/parent_from_member.hpp>
+#include <boost/move/detail/to_raw_pointer.hpp>
+
+#include <boost/static_assert.hpp>
+#include <boost/detail/lightweight_test.hpp>
namespace boost{
namespace intrusive{
template < typename NodeTraits, template <typename> class Node_Algorithms >
struct nonhook_node_member : public NodeTraits::node
{
- typedef NodeTraits node_traits;
+ typedef NodeTraits node_traits;
typedef typename node_traits::node node;
typedef typename node_traits::node_ptr node_ptr;
typedef typename node_traits::const_node_ptr const_node_ptr;
nonhook_node_member(const nonhook_node_member& rhs)
{
BOOST_TEST(!rhs.is_linked());
- *this = rhs;
+ node_algorithms::init(pointer_traits<node_ptr>::pointer_to(static_cast< node& >(*this)));
}
nonhook_node_member& operator = (const nonhook_node_member& rhs)
{
BOOST_TEST(!this->is_linked() && !rhs.is_linked());
- static_cast< node& >(*this) = rhs;
return *this;
}
{
return pointer_traits<pointer>::pointer_to
(*detail::parent_from_member<T, NonHook_Member>
- (static_cast<NonHook_Member*>(boost::intrusive::detail::to_raw_pointer(n)), P));
+ (static_cast<NonHook_Member*>(boost::movelib::to_raw_pointer(n)), P));
}
static const_pointer to_value_ptr(const_node_ptr n)
{
return pointer_traits<const_pointer>::pointer_to
(*detail::parent_from_member<T, NonHook_Member>
- (static_cast<const NonHook_Member*>(boost::intrusive::detail::to_raw_pointer(n)), P));
+ (static_cast<const NonHook_Member*>(boost::movelib::to_raw_pointer(n)), P));
}
};