#pragma once #include "asl/integers.hpp" #include "asl/meta.hpp" namespace asl { template inline constexpr isize_t size_of = static_cast(sizeof(T)); template inline constexpr isize_t align_of = static_cast(alignof(T)); struct layout { isize_t size; isize_t align; constexpr bool operator==(const layout&) const = default; template static constexpr layout of() { return layout{ size_of, align_of }; } template static constexpr layout array(isize_t size) { return layout{ size_of * size, align_of }; } }; } // namespace asl