7using Ptr = std::unique_ptr<T>;
9template <
class T,
typename... Args>
10constexpr Ptr<T> MakePtr(Args&&... args)
12 return std::make_unique<T>(std::forward<Args>(args)...);
17using Ref = std::shared_ptr<T>;
19template <
typename T,
typename... Args>
20constexpr Ref<T> MakeRef(Args&&... args)
22 return std::make_shared<T>(std::forward<Args>(args)...);
27using Weak = std::weak_ptr<T>;