Luna/luna/include/luna/Alloc.h
apio ee276a3a35
All checks were successful
continuous-integration/drone/push Build is passing
Add the nodiscard attribute to make and make_array
2022-12-07 11:01:45 +01:00

26 lines
525 B
C++

#pragma once
#include <luna/Result.h>
template <typename T, class... Args> [[nodiscard]] Result<T*> make(Args... args)
{
T* const result = new T(args...);
if (!result) return err(ENOMEM);
return result;
}
template <typename T> [[nodiscard]] Result<T*> make_array(usize count)
{
T* const result = new T[count];
if (!result) return err(ENOMEM);
return result;
}
template <typename T> void destroy(T* item)
{
delete item;
}
template <typename T> void destroy_array(T* item)
{
delete[] item;
}