diff --git a/include/boost/intrusive/detail/parent_from_member.hpp b/include/boost/intrusive/detail/parent_from_member.hpp index 8f1156e..b276348 100644 --- a/include/boost/intrusive/detail/parent_from_member.hpp +++ b/include/boost/intrusive/detail/parent_from_member.hpp @@ -22,6 +22,7 @@ #include #include +#include #include #if defined(_MSC_VER) @@ -90,15 +91,15 @@ BOOST_INTRUSIVE_FORCEINLINE std::ptrdiff_t offset_from_pointer_to_member(const M template BOOST_INTRUSIVE_FORCEINLINE Parent *parent_from_member(Member *member, const Member Parent::* ptr_to_member) { - return reinterpret_cast - (reinterpret_cast(member) - static_cast(offset_from_pointer_to_member(ptr_to_member))); + return boost::move_detail::launder(reinterpret_cast + (reinterpret_cast(member) - static_cast(offset_from_pointer_to_member(ptr_to_member)))); } template BOOST_INTRUSIVE_FORCEINLINE const Parent *parent_from_member(const Member *member, const Member Parent::* ptr_to_member) { - return reinterpret_cast - ( reinterpret_cast(member) - static_cast(offset_from_pointer_to_member(ptr_to_member)) ); + return boost::move_detail::launder(reinterpret_cast + ( reinterpret_cast(member) - static_cast(offset_from_pointer_to_member(ptr_to_member)) )); } } //namespace detail {