//https://lesleylai.info/en/std-align struct Arena { void* ptr = 0; std::size_t size_remain = 0; [[nodiscard]] auto aligned_alloc(std::size_t alignment, std::size_t size) noexcept -> void* { void* res = std::align(alignment, size, ptr, size_remain); if (res) { ptr = static_cast(res) + size; size_remain -= size; return res; } return nullptr; } };