15 const void* get()
const {
22 return ptr_ ==
reinterpret_cast<const void*
>(ptr);
27 bool is(
const T* ptr)
const {
34 return is(
reinterpret_cast<const void*
>(&ref));
38 template<
typename T,
typename... Ts>
54 return is_in_counted_range(&ref,
sizeof(T));
60 return is_in_counted_range(array,
sizeof(T) * n);
64 template<
typename T,
size_t N>
66 return is_in_counted_range(array.data(),
sizeof(T) * N);
72 return is_in_counted_range(vector.data(),
sizeof(T) * vector.size());
78 return ptr_ >=
reinterpret_cast<const void*
>(first) && ptr_ <
reinterpret_cast<const void*
>(last);
85 for(
auto it = vector.begin(); it != vector.end(); ++it) {
95 typename std::vector<T>::const_iterator
find_in_data_of(
const std::vector<T>& vector)
const {
101 bool points_to_one_of()
const {
107 bool is_in_counted_range(
const T* ptr,
size_t bytes)
const {
108 const void* first =
reinterpret_cast<const void*
>(ptr);
109 const void* last =
reinterpret_cast<const void*
>(
reinterpret_cast<size_t>(first) + bytes);
110 return ptr_ >= first && ptr_ < last;
114 const void* ptr_ =
nullptr;
this header is dependency free