33 constexpr std::uintptr_t
align_addr( std::uintptr_t
const addr, std::size_t
const alignment )
36 auto const low_bit_mask = alignment - 1;
37 return ( addr + low_bit_mask ) & ~low_bit_mask;
41 inline void*
align(
void*
const ptr, std::size_t
const alignment )
43 auto const iptr = std::bit_cast< std::uintptr_t >( ptr );
45 return static_cast< std::byte*
>( ptr ) + ( addr - iptr );
MIT License.
Definition: aliases.h:36
constexpr std::uintptr_t align_addr(std::uintptr_t const addr, std::size_t const alignment)
Definition: util.h:33
void * align(void *const ptr, std::size_t const alignment)
TODO: this needs tests.
Definition: util.h:41
physical_quantity< 0, 0, 0, 0, 0, 0, 0, 0, 1 > byte
Definition: physical_quantity.h:118