MakeSharedProected, MakeUniqueProtected
This commit is contained in:
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user