mirror of
https://github.com/boostorg/container.git
synced 2025-08-01 05:24:31 +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
|
#define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_MAX 0
|
||||||
#include <boost/intrusive/detail/has_member_function_callable_with.hpp>
|
#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 boost {
|
||||||
namespace container {
|
namespace container {
|
||||||
namespace dtl {
|
namespace dtl {
|
||||||
@@ -40,6 +48,23 @@ struct is_contiguous_container
|
|||||||
has_member_function_callable_with_data<const Container>::value;
|
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 dtl {
|
||||||
} //namespace container {
|
} //namespace container {
|
||||||
} //namespace boost {
|
} //namespace boost {
|
||||||
|
Reference in New Issue
Block a user