mirror of
https://github.com/boostorg/intrusive.git
synced 2025-07-30 12:37:35 +02:00
Sync from upstream.
This commit is contained in:
@ -46,6 +46,10 @@ struct bhtraits_base
|
|||||||
template rebind_pointer<T>::type pointer;
|
template rebind_pointer<T>::type pointer;
|
||||||
typedef typename pointer_traits<node_ptr>::
|
typedef typename pointer_traits<node_ptr>::
|
||||||
template rebind_pointer<const T>::type const_pointer;
|
template rebind_pointer<const T>::type const_pointer;
|
||||||
|
typedef typename pointer_traits<node_ptr>::
|
||||||
|
template rebind_pointer<node_holder_type>::type node_holder_ptr;
|
||||||
|
typedef typename pointer_traits<node_ptr>::
|
||||||
|
template rebind_pointer<const node_holder_type>::type const_node_holder_ptr;
|
||||||
typedef T & reference;
|
typedef T & reference;
|
||||||
typedef const T & const_reference;
|
typedef const T & const_reference;
|
||||||
typedef node_holder_type & node_holder_reference;
|
typedef node_holder_type & node_holder_reference;
|
||||||
@ -55,16 +59,14 @@ struct bhtraits_base
|
|||||||
|
|
||||||
inline static pointer to_value_ptr(node_ptr n)
|
inline static pointer to_value_ptr(node_ptr n)
|
||||||
{
|
{
|
||||||
pointer p = pointer_traits<pointer>::pointer_to
|
return pointer_traits<pointer>::
|
||||||
(static_cast<reference>(static_cast<node_holder_reference>(*n)));
|
static_cast_from(pointer_traits<node_holder_ptr>::static_cast_from(n));
|
||||||
return p;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static const_pointer to_value_ptr(const_node_ptr n)
|
inline static const_pointer to_value_ptr(const_node_ptr n)
|
||||||
{
|
{
|
||||||
const_pointer p = pointer_traits<const_pointer>::pointer_to
|
return pointer_traits<const_pointer>::
|
||||||
(static_cast<const_reference>(static_cast<const_node_holder_reference>(*n)));
|
static_cast_from(pointer_traits<const_node_holder_ptr>::static_cast_from(n));
|
||||||
return p;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static node_ptr to_node_ptr(reference value)
|
inline static node_ptr to_node_ptr(reference value)
|
||||||
|
@ -130,7 +130,7 @@ struct pointer_traits
|
|||||||
//!
|
//!
|
||||||
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
||||||
//! <code>pointer_to</code> is checked.
|
//! <code>pointer_to</code> is checked.
|
||||||
inline static pointer pointer_to(reference r) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer pointer_to(reference r) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
//Non-standard extension, it does not require Ptr::pointer_to. If not present
|
//Non-standard extension, it does not require Ptr::pointer_to. If not present
|
||||||
//tries to converts &r to pointer.
|
//tries to converts &r to pointer.
|
||||||
@ -150,7 +150,7 @@ struct pointer_traits
|
|||||||
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
||||||
//! <code>static_cast_from</code> is checked.
|
//! <code>static_cast_from</code> is checked.
|
||||||
template<class UPtr>
|
template<class UPtr>
|
||||||
inline static pointer static_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer static_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
typedef const UPtr &RefArg;
|
typedef const UPtr &RefArg;
|
||||||
const bool value = boost::intrusive::detail::
|
const bool value = boost::intrusive::detail::
|
||||||
@ -171,7 +171,7 @@ struct pointer_traits
|
|||||||
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
||||||
//! <code>const_cast_from</code> is checked.
|
//! <code>const_cast_from</code> is checked.
|
||||||
template<class UPtr>
|
template<class UPtr>
|
||||||
inline static pointer const_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer const_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
typedef const UPtr &RefArg;
|
typedef const UPtr &RefArg;
|
||||||
const bool value = boost::intrusive::detail::
|
const bool value = boost::intrusive::detail::
|
||||||
@ -192,7 +192,7 @@ struct pointer_traits
|
|||||||
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
//! <b>Note</b>: For non-conforming compilers only the existence of a member function called
|
||||||
//! <code>dynamic_cast_from</code> is checked.
|
//! <code>dynamic_cast_from</code> is checked.
|
||||||
template<class UPtr>
|
template<class UPtr>
|
||||||
inline static pointer dynamic_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer dynamic_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
typedef const UPtr &RefArg;
|
typedef const UPtr &RefArg;
|
||||||
const bool value = boost::intrusive::detail::
|
const bool value = boost::intrusive::detail::
|
||||||
@ -208,46 +208,46 @@ struct pointer_traits
|
|||||||
private:
|
private:
|
||||||
//priv_to_raw_pointer
|
//priv_to_raw_pointer
|
||||||
template <class T>
|
template <class T>
|
||||||
inline static T* to_raw_pointer(T* p) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static T* to_raw_pointer(T* p) BOOST_NOEXCEPT
|
||||||
{ return p; }
|
{ return p; }
|
||||||
|
|
||||||
template <class Pointer>
|
template <class Pointer>
|
||||||
inline static typename pointer_traits<Pointer>::element_type*
|
BOOST_INTRUSIVE_FORCEINLINE static typename pointer_traits<Pointer>::element_type*
|
||||||
to_raw_pointer(const Pointer &p) BOOST_NOEXCEPT
|
to_raw_pointer(const Pointer &p) BOOST_NOEXCEPT
|
||||||
{ return pointer_traits::to_raw_pointer(p.operator->()); }
|
{ return pointer_traits::to_raw_pointer(p.operator->()); }
|
||||||
|
|
||||||
//priv_pointer_to
|
//priv_pointer_to
|
||||||
inline static pointer priv_pointer_to(boost::intrusive::detail::true_, reference r) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_pointer_to(boost::intrusive::detail::true_, reference r) BOOST_NOEXCEPT
|
||||||
{ return Ptr::pointer_to(r); }
|
{ return Ptr::pointer_to(r); }
|
||||||
|
|
||||||
inline static pointer priv_pointer_to(boost::intrusive::detail::false_, reference r) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_pointer_to(boost::intrusive::detail::false_, reference r) BOOST_NOEXCEPT
|
||||||
{ return pointer(boost::intrusive::detail::addressof(r)); }
|
{ return pointer(boost::intrusive::detail::addressof(r)); }
|
||||||
|
|
||||||
//priv_static_cast_from
|
//priv_static_cast_from
|
||||||
template<class UPtr>
|
template<class UPtr>
|
||||||
inline static pointer priv_static_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_static_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||||
{ return Ptr::static_cast_from(uptr); }
|
{ return Ptr::static_cast_from(uptr); }
|
||||||
|
|
||||||
template<class UPtr>
|
template<class UPtr>
|
||||||
inline static pointer priv_static_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_static_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||||
{ return uptr ? pointer_to(*static_cast<element_type*>(to_raw_pointer(uptr))) : pointer(); }
|
{ return uptr ? pointer_to(*static_cast<element_type*>(to_raw_pointer(uptr))) : pointer(); }
|
||||||
|
|
||||||
//priv_const_cast_from
|
//priv_const_cast_from
|
||||||
template<class UPtr>
|
template<class UPtr>
|
||||||
inline static pointer priv_const_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_const_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||||
{ return Ptr::const_cast_from(uptr); }
|
{ return Ptr::const_cast_from(uptr); }
|
||||||
|
|
||||||
template<class UPtr>
|
template<class UPtr>
|
||||||
inline static pointer priv_const_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_const_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||||
{ return uptr ? pointer_to(const_cast<element_type&>(*uptr)) : pointer(); }
|
{ return uptr ? pointer_to(const_cast<element_type&>(*uptr)) : pointer(); }
|
||||||
|
|
||||||
//priv_dynamic_cast_from
|
//priv_dynamic_cast_from
|
||||||
template<class UPtr>
|
template<class UPtr>
|
||||||
inline static pointer priv_dynamic_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_dynamic_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||||
{ return Ptr::dynamic_cast_from(uptr); }
|
{ return Ptr::dynamic_cast_from(uptr); }
|
||||||
|
|
||||||
template<class UPtr>
|
template<class UPtr>
|
||||||
inline static pointer priv_dynamic_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer priv_dynamic_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
|
||||||
{ return uptr ? pointer_to(dynamic_cast<element_type&>(*uptr)) : pointer(); }
|
{ return uptr ? pointer_to(dynamic_cast<element_type&>(*uptr)) : pointer(); }
|
||||||
///@endcond
|
///@endcond
|
||||||
};
|
};
|
||||||
@ -296,25 +296,25 @@ struct pointer_traits<T*>
|
|||||||
|
|
||||||
//! <b>Returns</b>: addressof(r)
|
//! <b>Returns</b>: addressof(r)
|
||||||
//!
|
//!
|
||||||
inline static pointer pointer_to(reference r) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer pointer_to(reference r) BOOST_NOEXCEPT
|
||||||
{ return boost::intrusive::detail::addressof(r); }
|
{ return boost::intrusive::detail::addressof(r); }
|
||||||
|
|
||||||
//! <b>Returns</b>: static_cast<pointer>(uptr)
|
//! <b>Returns</b>: static_cast<pointer>(uptr)
|
||||||
//!
|
//!
|
||||||
template<class U>
|
template<class U>
|
||||||
inline static pointer static_cast_from(U *uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer static_cast_from(U *uptr) BOOST_NOEXCEPT
|
||||||
{ return static_cast<pointer>(uptr); }
|
{ return static_cast<pointer>(uptr); }
|
||||||
|
|
||||||
//! <b>Returns</b>: const_cast<pointer>(uptr)
|
//! <b>Returns</b>: const_cast<pointer>(uptr)
|
||||||
//!
|
//!
|
||||||
template<class U>
|
template<class U>
|
||||||
inline static pointer const_cast_from(U *uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer const_cast_from(U *uptr) BOOST_NOEXCEPT
|
||||||
{ return const_cast<pointer>(uptr); }
|
{ return const_cast<pointer>(uptr); }
|
||||||
|
|
||||||
//! <b>Returns</b>: dynamic_cast<pointer>(uptr)
|
//! <b>Returns</b>: dynamic_cast<pointer>(uptr)
|
||||||
//!
|
//!
|
||||||
template<class U>
|
template<class U>
|
||||||
inline static pointer dynamic_cast_from(U *uptr) BOOST_NOEXCEPT
|
BOOST_INTRUSIVE_FORCEINLINE static pointer dynamic_cast_from(U *uptr) BOOST_NOEXCEPT
|
||||||
{ return dynamic_cast<pointer>(uptr); }
|
{ return dynamic_cast<pointer>(uptr); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user