MakeSharedProected, MakeUniqueProtected

This commit is contained in:
2026-01-12 23:47:32 +05:30
parent 617210a84a
commit 077d387a59

View File

@ -565,9 +565,34 @@ template<typename _value_type> using Deque = std::deque<_value_type>;
template<typename _type_a, typename _type_b> using Pair = std::pair<_type_a, _type_b>;
template<typename... types> using Tuple = std::tuple<types...>;
template<typename _key_type, typename _value_type> 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<typename T, typename... Args> inline SharedPtr<T> MakeSharedProtected(Args &&...args)
{
struct make_shared_enabler : public T
{
make_shared_enabler(Args &&...args) : T(std::forward<Args>(args)...)
{
}
};
return MakeShared<make_shared_enabler>(std::forward<Args>(args)...);
}
template<typename T, typename... Args> inline SharedPtr<T> MakeUniqueProtected(Args &&...args)
{
struct make_unique_enabler : public T
{
make_unique_enabler(Args &&...args) : T(std::forward<Args>(args)...)
{
}
};
return MakeUnique<make_unique_enabler>(std::forward<Args>(args)...);
}
template<typename _expected_type, typename _unexpected_type>
using Expected = tl::expected<_expected_type, _unexpected_type>;
ALIAS_FUNCTION(MakeUnexpected, tl::make_unexpected);