diff options
Diffstat (limited to 'src/components/include/utils/make_shared.h')
-rw-r--r-- | src/components/include/utils/make_shared.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/components/include/utils/make_shared.h b/src/components/include/utils/make_shared.h index dc817e362d..665344737c 100644 --- a/src/components/include/utils/make_shared.h +++ b/src/components/include/utils/make_shared.h @@ -69,6 +69,43 @@ SharedPtr<T> MakeShared() { } template<typename T, typename Arg1> +SharedPtr<T> MakeShared(Arg1& arg1) { + T* t = new (std::nothrow) T(arg1); + return Initialize(t); +} + +template<typename T, typename Arg1, typename Arg2> +SharedPtr<T> MakeShared(Arg1& arg1, Arg2& arg2) { + T* t = new (std::nothrow) T(arg1, arg2); + return Initialize(t); +} + +template<typename T, typename Arg1, typename Arg2, typename Arg3> +SharedPtr<T> MakeShared(Arg1& arg1, Arg2& arg2, Arg3& arg3) { + T* t = new (std::nothrow) T(arg1, arg2, arg3); + return Initialize(t); +} + +template<typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4> +SharedPtr<T> MakeShared(Arg1& arg1, Arg2& arg2, Arg3& arg3, Arg4& arg4) { + T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4); + return Initialize(t); +} + +template<typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5> +SharedPtr<T> MakeShared(Arg1& arg1, Arg2& arg2, Arg3& arg3, Arg4& arg4, Arg5& arg5) { + T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4, arg5); + return Initialize(t); +} + +template<typename T, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6> +SharedPtr<T> MakeShared(Arg1& arg1, Arg2& arg2, Arg3& arg3, Arg4& arg4, Arg5& arg5, Arg6& arg6) { + T* t = new (std::nothrow) T(arg1, arg2, arg3, arg4, arg5, arg6); + return Initialize(t); +} + + +template<typename T, typename Arg1> SharedPtr<T> MakeShared(const Arg1& arg1) { T* t = new (std::nothrow) T(arg1); return Initialize(t); @@ -104,5 +141,6 @@ SharedPtr<T> MakeShared(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3, co return Initialize(t); } + } // namespace utils; #endif // SRC_COMPONENTS_INCLUDE_UTILS_MAKE_SHARED_H_ |