forked from boostorg/intrusive
Add workaround for MSVC 14-0 bad code generation in slist_test
This commit is contained in:
@@ -91,25 +91,15 @@ BOOST_INTRUSIVE_FORCEINLINE std::ptrdiff_t offset_from_pointer_to_member(const M
|
||||
template<class Parent, class Member>
|
||||
BOOST_INTRUSIVE_FORCEINLINE Parent *parent_from_member(Member *member, const Member Parent::* 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)
|
||||
)
|
||||
);
|
||||
return reinterpret_cast<Parent*>
|
||||
(reinterpret_cast<std::size_t>(member) - static_cast<std::size_t>(offset_from_pointer_to_member(ptr_to_member)));
|
||||
}
|
||||
|
||||
template<class Parent, class Member>
|
||||
BOOST_INTRUSIVE_FORCEINLINE const Parent *parent_from_member(const Member *member, const Member Parent::* 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)
|
||||
)
|
||||
);
|
||||
return reinterpret_cast<const Parent*>
|
||||
( reinterpret_cast<std::size_t>(member) - static_cast<std::size_t>(offset_from_pointer_to_member(ptr_to_member)) );
|
||||
}
|
||||
|
||||
} //namespace detail {
|
||||
|
||||
@@ -152,7 +152,7 @@ class linear_slist_algorithms
|
||||
//!
|
||||
//! <b>Throws</b>: Nothing.
|
||||
inline static void init_header(node_ptr this_node) BOOST_NOEXCEPT
|
||||
{ NodeTraits::set_next(this_node, node_ptr ()); }
|
||||
{ NodeTraits::set_next(this_node, node_ptr()); }
|
||||
|
||||
//! <b>Requires</b>: 'p' is the first node of a list.
|
||||
//!
|
||||
|
||||
Reference in New Issue
Block a user