3#include <spdlog/common.h>
4#include <core/utilities/memory.hpp>
12 using strong_ref = memory::strong_ptr<T>;
24 template<
typename T,
typename... Args>
25 strong_ref<T> create_strong_ref(
26 std::pmr::polymorphic_allocator<> p_allocator,
28 return memory::make_strong_ptr<T>(p_allocator,
29 std::forward<Args>(args)...);
36 using optional_ref = memory::optional_ptr<T>;
42 using ref = std::shared_ptr<T>;
52 template<
typename T,
typename... Args>
53 constexpr ref<T> create_ref(Args&&... args) {
54 return std::make_shared<T>(std::forward<Args>(args)...);
61 using scope = std::unique_ptr<T>;
71 template<
typename T,
typename... Args>
72 constexpr scope<T> create_scope(Args&&... args) {
73 return std::make_unique<T>(std::forward<Args>(args)...);