diff --git a/include/boost/container/detail/is_contiguous_container.hpp b/include/boost/container/detail/is_contiguous_container.hpp index 528aeee..47ab363 100644 --- a/include/boost/container/detail/is_contiguous_container.hpp +++ b/include/boost/container/detail/is_contiguous_container.hpp @@ -26,6 +26,14 @@ #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MAX 0 #include +//back_free_capacity +#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME back_free_capacity +#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEG namespace boost { namespace container { namespace back_free_capacity_detail { +#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}} +#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MIN 0 +#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MAX 0 +#include + namespace boost { namespace container { namespace dtl { @@ -40,6 +48,23 @@ struct is_contiguous_container has_member_function_callable_with_data::value; }; + +template < class Container + , bool = boost::container::back_free_capacity_detail:: + has_member_function_callable_with_back_free_capacity::value> +struct back_free_capacity +{ + static typename Container::size_type get(const Container &c) + { return c.back_free_capacity(); } +}; + +template < class Container> +struct back_free_capacity +{ + static typename Container::size_type get(const Container &c) + { return c.capacity() - c.size(); } +}; + } //namespace dtl { } //namespace container { } //namespace boost {