mirror of
https://github.com/boostorg/intrusive.git
synced 2025-08-03 14:34:44 +02:00
More correct casting
[SVN r78588]
This commit is contained in:
@@ -47,13 +47,25 @@ inline std::ptrdiff_t offset_from_pointer_to_member(const Member Parent::* ptr_t
|
|||||||
template<class Parent, class Member>
|
template<class Parent, class Member>
|
||||||
inline Parent *parent_from_member(Member *member, const Member Parent::* ptr_to_member)
|
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<Parent*>
|
||||||
|
(
|
||||||
|
static_cast<void*>
|
||||||
|
(
|
||||||
|
static_cast<char*>(static_cast<void*>(member)) - offset_from_pointer_to_member(ptr_to_member)
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Parent, class Member>
|
template<class Parent, class Member>
|
||||||
inline const Parent *parent_from_member(const Member *member, const Member Parent::* ptr_to_member)
|
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<const Parent*>
|
||||||
|
(
|
||||||
|
static_cast<const void*>
|
||||||
|
(
|
||||||
|
static_cast<const char*>(static_cast<const void*>(member)) - offset_from_pointer_to_member(ptr_to_member)
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
} //namespace detail {
|
} //namespace detail {
|
||||||
|
Reference in New Issue
Block a user