...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::intrusive::derivation_value_traits
// In header: <boost/intrusive/derivation_value_traits.hpp> template<typename T, typename NodeTraits, link_mode_type LinkMode = safe_link> struct derivation_value_traits { // types typedef NodeTraits node_traits; typedef T value_type; typedef node_traits::node node; typedef node_traits::node_ptr node_ptr; typedef node_traits::const_node_ptr const_node_ptr; typedef pointer_traits< node_ptr >::template rebind_pointer< value_type >::type pointer; typedef pointer_traits< node_ptr >::template rebind_pointer< const value_type >::type const_pointer; typedef boost::intrusive::pointer_traits< pointer >::reference reference; typedef boost::intrusive::pointer_traits< const_pointer >::reference const_reference; // public static functions static node_ptr to_node_ptr(reference) noexcept; static const_node_ptr to_node_ptr(const_reference) noexcept; static pointer to_value_ptr(node_ptr) noexcept; static const_pointer to_value_ptr(const_node_ptr) noexcept; // public data members static const link_mode_type link_mode; };