#pragma once #include <luna/Heap.h> #include <luna/PlacementNew.h> #include <luna/Result.h> template <typename T, class... Args> [[nodiscard]] Result<T*> make(Args... args) { T* const result = (T*)TRY(malloc_impl(sizeof(T))); new (result) T(args...); return result; } template <typename T> void destroy(T* item) { delete item; }