Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for a snapshot of the develop branch, built from commit ea287ed632.
PrevUpHomeNext

pointer_in_range

Overview
Examples
Reference
Notes
History

Authors

  • Glen Fernandes

The header <boost/core/pointer_in_range.hpp> provides the function template boost::pointer_in_range to check if a pointer is in a given range. This can be used in constant expressions in C++14 or higher when the compiler has a builtin to support std::is_constant_evaluated.

The following is an example of an allocator's deallocation function that does nothing if the pointer falls within a small automatically allocated buffer.

template<class T, class N>
void
Allocator<T, N>::deallocate(pointer ptr, size_type)
{
    if (!boost::pointer_in_range(ptr, buffer_, buffer_ + N)) {
        ::operator delete(ptr);
    }
}
namespace boost {

template<class T>
constexpr bool pointer_in_range(const T* ptr, const T* begin, const T* end);

} /* boost */

template<class T> constexpr bool pointer_in_range(const T* ptr, const T* begin, const T* end);

Requires

[begin,end) is a valid range.

Returns

true if ptr is in range [begin,end), otherwise false.

If boost::pointer_in_range is not usable in constant expressions the macro BOOST_CORE_NO_CONSTEXPR_POINTER_IN_RANGE is defined.

Glen Fernandes implemented pointer_in_range.


PrevUpHomeNext