From 27a8cf203ea1356a836ee330e68c8ecdc6f1f15a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Thu, 24 May 2012 15:50:45 +0000 Subject: [PATCH] More correct casting [SVN r78588] --- .../intrusive/detail/parent_from_member.hpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/include/boost/intrusive/detail/parent_from_member.hpp b/include/boost/intrusive/detail/parent_from_member.hpp index c06d932..a61ad94 100644 --- a/include/boost/intrusive/detail/parent_from_member.hpp +++ b/include/boost/intrusive/detail/parent_from_member.hpp @@ -47,13 +47,25 @@ inline std::ptrdiff_t offset_from_pointer_to_member(const Member Parent::* ptr_t template inline Parent *parent_from_member(Member *member, const Member Parent::* ptr_to_member) { - return (Parent*)((char*)member - offset_from_pointer_to_member(ptr_to_member)); + return static_cast + ( + static_cast + ( + static_cast(static_cast(member)) - offset_from_pointer_to_member(ptr_to_member) + ) + ); } template inline const Parent *parent_from_member(const Member *member, const Member Parent::* ptr_to_member) { - return (const Parent*)((const char*)member - offset_from_pointer_to_member(ptr_to_member)); + return static_cast + ( + static_cast + ( + static_cast(static_cast(member)) - offset_from_pointer_to_member(ptr_to_member) + ) + ); } } //namespace detail {