<xstd/ints/memory.hpp>¶
namespace xstd {
template<alignable T>
constexpr auto align_down(T value, size_t alignment) noexcept(nothrow_alignable<T>) -> T;
template<class T>
auto align_down(T* pointer, size_t alignment) noexcept -> T*;
template<alignable T>
constexpr auto align_up(T value, size_t alignment) noexcept(nothrow_alignable<T>) -> T;
template<class T>
auto align_up(T* pointer, size_t alignment) noexcept -> T*;
template<alignable T>
constexpr auto is_aligned(T value, size_t alignment) noexcept(nothrow_alignable<T>) -> bool;
template<class T>
auto is_aligned(T* pointer, size_t alignment) noexcept -> bool;
}
| Header | Declares |
|---|---|
<xstd/ints/memory/align_down.hpp> |
align_down |
<xstd/ints/memory/align_up.hpp> |
align_up |
<xstd/ints/memory/is_aligned.hpp> |
is_aligned |
The umbrella exports the three headers under <xstd/ints/memory/>. The three agree with Boost.Align on values at every
standard unsigned width and on pointers, and what align_up and align_down return satisfies is_aligned.