Vivid
Loading...
Searching...
No Matches
SmartPointers.h
1#pragma once
2
3#include <memory>
4
5// std::unique_ptr
6template <class T>
7using Ptr = std::unique_ptr<T>;
8
9template <class T, typename... Args>
10constexpr Ptr<T> MakePtr(Args&&... args)
11{
12 return std::make_unique<T>(std::forward<Args>(args)...);
13}
14
15// std::shared_ptr
16template <class T>
17using Ref = std::shared_ptr<T>;
18
19template <typename T, typename... Args>
20constexpr Ref<T> MakeRef(Args&&... args)
21{
22 return std::make_shared<T>(std::forward<Args>(args)...);
23}
24
25// std::weak_ptr
26template <class T>
27using Weak = std::weak_ptr<T>;