From 077d387a59286723eea03761104b8a15752b271b Mon Sep 17 00:00:00 2001 From: dev0 Date: Mon, 12 Jan 2026 23:47:32 +0530 Subject: [PATCH] MakeSharedProected, MakeUniqueProtected --- Src/IACore/inc/IACore/PCH.hpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Src/IACore/inc/IACore/PCH.hpp b/Src/IACore/inc/IACore/PCH.hpp index 201dacd..61df00e 100644 --- a/Src/IACore/inc/IACore/PCH.hpp +++ b/Src/IACore/inc/IACore/PCH.hpp @@ -565,9 +565,34 @@ template using Deque = std::deque<_value_type>; template using Pair = std::pair<_type_a, _type_b>; template using Tuple = std::tuple; template using KeyValuePair = std::pair<_key_type, _value_type>; + ALIAS_TEMPLATE_FUNCTION(_value_type, MakeShared, std::make_shared); ALIAS_TEMPLATE_FUNCTION(_value_type, MakeUnique, std::make_unique); +template inline SharedPtr MakeSharedProtected(Args &&...args) +{ + struct make_shared_enabler : public T + { + make_shared_enabler(Args &&...args) : T(std::forward(args)...) + { + } + }; + + return MakeShared(std::forward(args)...); +} + +template inline SharedPtr MakeUniqueProtected(Args &&...args) +{ + struct make_unique_enabler : public T + { + make_unique_enabler(Args &&...args) : T(std::forward(args)...) + { + } + }; + + return MakeUnique(std::forward(args)...); +} + template using Expected = tl::expected<_expected_type, _unexpected_type>; ALIAS_FUNCTION(MakeUnexpected, tl::make_unexpected);