20 std::is_same<UINT64, std::remove_cv_t<T>>
25 std::enable_if_t<is_ptr_or_uint64<T>::value,
int> = 0>
28 if constexpr (std::is_pointer<T>::value)
30 return reinterpret_cast<std::byte*
>(p1) -
reinterpret_cast<std::byte*
>(p2);
34 return static_cast<std::ptrdiff_t
>(p1 - p2);
39template <
typename T,
typename U,
43 if constexpr (std::is_pointer<T>::value)
45 return reinterpret_cast<T
>(
46 reinterpret_cast<std::byte*
>(p1) + offset
51 return static_cast<T
>(p1 + offset);
57 std::enable_if_t<is_ptr_or_uint64<T>::value,
int> = 0>
60 if constexpr (std::is_pointer<T>::value)
71#define RAW_OFFSET(type, x, offset) (type)((size_t)x + offset)
72#define RAW_DIFF(p1,p2) ((intptr_t)p1 - (intptr_t)p2)
73#define MEM_AFTER(type, p) ((type)(&(p)[1]))
75#define DIV_ROUND_UP(x, y) \
78#define ALIGN_UP(x, y) (DIV_ROUND_UP(x,y)*y)
std::ptrdiff_t raw_diff(T p1, T p2)
Definition Common.hpp:26
T raw_offset(U p1, std::ptrdiff_t offset)
Definition Common.hpp:41
T mem_after(T p1)
Definition Common.hpp:58