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 _type_a, typename _type_b> using Pair = std::pair<_type_a, _type_b>;
|
||||||
template<typename... types> using Tuple = std::tuple<types...>;
|
template<typename... types> using Tuple = std::tuple<types...>;
|
||||||
template<typename _key_type, typename _value_type> using KeyValuePair = std::pair<_key_type, _value_type>;
|
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, MakeShared, std::make_shared);
|
||||||
ALIAS_TEMPLATE_FUNCTION(_value_type, MakeUnique, std::make_unique);
|
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>
|
template<typename _expected_type, typename _unexpected_type>
|
||||||
using Expected = tl::expected<_expected_type, _unexpected_type>;
|
using Expected = tl::expected<_expected_type, _unexpected_type>;
|
||||||
ALIAS_FUNCTION(MakeUnexpected, tl::make_unexpected);
|
ALIAS_FUNCTION(MakeUnexpected, tl::make_unexpected);
|
||||||
|
|||||||
Reference in New Issue
Block a user