| Home | Libraries | People | FAQ | More

## pointer_in_range

### Authors

- Glen Fernandes

### Overview

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`.

### Examples

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);
        }
    }

### Reference

    namespace boost {

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

    } /* boost */

#### Functions

`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`.

### Notes

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

### History

Glen Fernandes implemented `pointer_in_range`.