mirror of
https://github.com/boostorg/container.git
synced 2025-07-31 13:07:17 +02:00
Add "back_free_capacity" utility
This commit is contained in:
@ -26,6 +26,14 @@
|
||||
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MAX 0
|
||||
#include <boost/intrusive/detail/has_member_function_callable_with.hpp>
|
||||
|
||||
//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 <boost/intrusive/detail/has_member_function_callable_with.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace container {
|
||||
namespace dtl {
|
||||
@ -40,6 +48,23 @@ struct is_contiguous_container
|
||||
has_member_function_callable_with_data<const Container>::value;
|
||||
};
|
||||
|
||||
|
||||
template < class Container
|
||||
, bool = boost::container::back_free_capacity_detail::
|
||||
has_member_function_callable_with_back_free_capacity<const Container>::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<Container, false>
|
||||
{
|
||||
static typename Container::size_type get(const Container &c)
|
||||
{ return c.capacity() - c.size(); }
|
||||
};
|
||||
|
||||
} //namespace dtl {
|
||||
} //namespace container {
|
||||
} //namespace boost {
|
||||
|
Reference in New Issue
Block a user