Chris@16: ///////////////////////////////////////////////////////////////////////////// Chris@16: // Chris@16: // (C) Copyright Ion Gaztanaga 2009-2013. Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. Chris@16: // (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: // Chris@16: // See http://www.boost.org/libs/intrusive for documentation. Chris@16: // Chris@16: ///////////////////////////////////////////////////////////////////////////// Chris@16: Chris@16: #ifndef BOOST_INTRUSIVE_DETAIL_IS_STATEFUL_VALUE_TRAITS_HPP Chris@16: #define BOOST_INTRUSIVE_DETAIL_IS_STATEFUL_VALUE_TRAITS_HPP Chris@16: Chris@101: #ifndef BOOST_CONFIG_HPP Chris@101: # include Chris@101: #endif Chris@101: Chris@101: #if defined(BOOST_HAS_PRAGMA_ONCE) Chris@101: # pragma once Chris@101: #endif Chris@16: Chris@16: #if defined(_MSC_VER) && (_MSC_VER <= 1310) Chris@16: Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: namespace intrusive { Chris@16: namespace detail { Chris@16: Chris@16: template Chris@16: struct is_stateful_value_traits Chris@16: { Chris@16: static const bool value = !detail::is_empty_class::value; Chris@16: }; Chris@16: Chris@16: }}} Chris@16: Chris@16: #else Chris@16: Chris@16: #include Chris@16: Chris@16: BOOST_INTRUSIVE_CREATE_FUNCTION_DETECTOR(to_node_ptr, boost_intrusive) Chris@16: BOOST_INTRUSIVE_CREATE_FUNCTION_DETECTOR(to_value_ptr, boost_intrusive) Chris@16: Chris@16: namespace boost { Chris@16: namespace intrusive { Chris@16: namespace detail { Chris@16: Chris@16: template Chris@16: struct is_stateful_value_traits Chris@16: { Chris@16: typedef typename ValueTraits::node_ptr node_ptr; Chris@16: typedef typename ValueTraits::pointer pointer; Chris@16: typedef typename ValueTraits::value_type value_type; Chris@16: typedef typename ValueTraits::const_node_ptr const_node_ptr; Chris@16: typedef typename ValueTraits::const_pointer const_pointer; Chris@16: Chris@16: typedef ValueTraits value_traits; Chris@16: Chris@16: static const bool value = Chris@16: (boost::intrusive::function_detector::NonStaticFunction == Chris@16: (BOOST_INTRUSIVE_DETECT_FUNCTION(ValueTraits, boost_intrusive, node_ptr, to_node_ptr, (value_type&) ))) Chris@16: || Chris@16: (boost::intrusive::function_detector::NonStaticFunction == Chris@16: (BOOST_INTRUSIVE_DETECT_FUNCTION(ValueTraits, boost_intrusive, pointer, to_value_ptr, (node_ptr) ))) Chris@16: || Chris@16: (boost::intrusive::function_detector::NonStaticFunction == Chris@16: (BOOST_INTRUSIVE_DETECT_FUNCTION(ValueTraits, boost_intrusive, const_node_ptr, to_node_ptr, (const value_type&) ))) Chris@16: || Chris@16: (boost::intrusive::function_detector::NonStaticFunction == Chris@16: (BOOST_INTRUSIVE_DETECT_FUNCTION(ValueTraits, boost_intrusive, const_pointer, to_value_ptr, (const_node_ptr) ))) Chris@16: ; Chris@16: }; Chris@16: Chris@16: }}} Chris@16: Chris@16: #endif Chris@16: Chris@16: #endif //@ifndef BOOST_INTRUSIVE_DETAIL_IS_STATEFUL_VALUE_TRAITS_HPP