refactor(typetraits): remove TypeTraits namespace and bool operation template
This commit is contained in:
@ -8,7 +8,6 @@
|
||||
NAMESPACE_REDCRAFT_BEGIN
|
||||
NAMESPACE_MODULE_BEGIN(Redcraft)
|
||||
NAMESPACE_MODULE_BEGIN(Utility)
|
||||
NAMESPACE_BEGIN(TypeTraits)
|
||||
|
||||
template <typename T> struct TIsReference : TBoolConstant<NAMESPACE_STD::is_reference_v<T>> { };
|
||||
template <typename T> struct TIsArithmetic : TBoolConstant<NAMESPACE_STD::is_arithmetic_v<T>> { };
|
||||
@ -18,7 +17,6 @@ template <typename T> struct TIsScalar : TBoolConstant<NAMESPACE_STD::is_
|
||||
template <typename T> struct TIsCompound : TBoolConstant<NAMESPACE_STD::is_compound_v<T>> { };
|
||||
template <typename T> struct TIsMemberPointer : TBoolConstant<NAMESPACE_STD::is_member_pointer_v<T>> { };
|
||||
|
||||
NAMESPACE_END(TypeTraits)
|
||||
NAMESPACE_MODULE_END(Utility)
|
||||
NAMESPACE_MODULE_END(Redcraft)
|
||||
NAMESPACE_REDCRAFT_END
|
||||
|
@ -5,7 +5,6 @@
|
||||
NAMESPACE_REDCRAFT_BEGIN
|
||||
NAMESPACE_MODULE_BEGIN(Redcraft)
|
||||
NAMESPACE_MODULE_BEGIN(Utility)
|
||||
NAMESPACE_BEGIN(TypeTraits)
|
||||
|
||||
template <typename InType, InType InValue>
|
||||
struct TConstant
|
||||
@ -23,28 +22,6 @@ using TBoolConstant = TConstant<bool, InValue>;
|
||||
using FTrue = TBoolConstant<true>;
|
||||
using FFalse = TBoolConstant<false>;
|
||||
|
||||
template <typename... Types>
|
||||
struct TAnd;
|
||||
|
||||
template <typename LHS, typename... RHS>
|
||||
struct TAnd<LHS, RHS...> : TBoolConstant<LHS::Value&& TAnd<RHS...>::Value> { };
|
||||
|
||||
template <>
|
||||
struct TAnd<> : FTrue { };
|
||||
|
||||
template <typename... Types>
|
||||
struct TOr;
|
||||
|
||||
template <typename LHS, typename... RHS>
|
||||
struct TOr<LHS, RHS...> : TBoolConstant<LHS::Value || TOr<RHS...>::Value> { };
|
||||
|
||||
template <>
|
||||
struct TOr<> : FFalse { };
|
||||
|
||||
template <typename Type>
|
||||
struct TNot : TBoolConstant<!Type::Value> { };
|
||||
|
||||
NAMESPACE_END(TypeTraits)
|
||||
NAMESPACE_MODULE_END(Utility)
|
||||
NAMESPACE_MODULE_END(Redcraft)
|
||||
NAMESPACE_REDCRAFT_END
|
||||
|
@ -8,7 +8,6 @@
|
||||
NAMESPACE_REDCRAFT_BEGIN
|
||||
NAMESPACE_MODULE_BEGIN(Redcraft)
|
||||
NAMESPACE_MODULE_BEGIN(Utility)
|
||||
NAMESPACE_BEGIN(TypeTraits)
|
||||
|
||||
NAMESPACE_PRIVATE_BEGIN
|
||||
|
||||
@ -56,7 +55,6 @@ template <typename T> struct TUnderlyingType { using Type =
|
||||
template <typename F, typename... Args> struct TInvokeResult { using Type = NAMESPACE_STD::invoke_result_t<F, Args...>; }; // FIXME: The result for char(&())[2] is wrong on MSVC
|
||||
template <typename... Types> struct TVoid { using Type = void; };
|
||||
|
||||
NAMESPACE_END(TypeTraits)
|
||||
NAMESPACE_MODULE_END(Utility)
|
||||
NAMESPACE_MODULE_END(Redcraft)
|
||||
NAMESPACE_REDCRAFT_END
|
||||
|
@ -8,7 +8,6 @@
|
||||
NAMESPACE_REDCRAFT_BEGIN
|
||||
NAMESPACE_MODULE_BEGIN(Redcraft)
|
||||
NAMESPACE_MODULE_BEGIN(Utility)
|
||||
NAMESPACE_BEGIN(TypeTraits)
|
||||
|
||||
template <typename T> struct TIsVoid : TBoolConstant<NAMESPACE_STD::is_void_v<T>> { };
|
||||
template <typename T> struct TIsNullPointer : TBoolConstant<NAMESPACE_STD::is_null_pointer_v<T>> { };
|
||||
@ -25,7 +24,6 @@ template <typename T> struct TIsUnion : TBoolConstant<NAMESPACE_
|
||||
template <typename T> struct TIsClass : TBoolConstant<NAMESPACE_STD::is_class_v<T>> { };
|
||||
template <typename T> struct TIsFunction : TBoolConstant<NAMESPACE_STD::is_function_v<T>> { };
|
||||
|
||||
NAMESPACE_END(TypeTraits)
|
||||
NAMESPACE_MODULE_END(Utility)
|
||||
NAMESPACE_MODULE_END(Redcraft)
|
||||
NAMESPACE_REDCRAFT_END
|
||||
|
@ -8,7 +8,6 @@
|
||||
NAMESPACE_REDCRAFT_BEGIN
|
||||
NAMESPACE_MODULE_BEGIN(Redcraft)
|
||||
NAMESPACE_MODULE_BEGIN(Utility)
|
||||
NAMESPACE_BEGIN(TypeTraits)
|
||||
|
||||
template <typename T> struct TIsDefaultConstructible : TBoolConstant<NAMESPACE_STD::is_default_constructible_v<T>> { };
|
||||
template <typename T> struct TIsCopyConstructible : TBoolConstant<NAMESPACE_STD::is_copy_constructible_v<T>> { };
|
||||
@ -45,7 +44,6 @@ template <typename T, typename... Args> struct TIsTriviallyConstructible : TBool
|
||||
|
||||
//template <typename T, typename... Args> struct TIsNothrowConstructible;
|
||||
|
||||
NAMESPACE_END(TypeTraits)
|
||||
NAMESPACE_MODULE_END(Utility)
|
||||
NAMESPACE_MODULE_END(Redcraft)
|
||||
NAMESPACE_REDCRAFT_END
|
||||
|
@ -8,7 +8,6 @@
|
||||
NAMESPACE_REDCRAFT_BEGIN
|
||||
NAMESPACE_MODULE_BEGIN(Redcraft)
|
||||
NAMESPACE_MODULE_BEGIN(Utility)
|
||||
NAMESPACE_BEGIN(TypeTraits)
|
||||
|
||||
template <typename T> struct TIsConst : TBoolConstant<NAMESPACE_STD::is_const_v<T>> { };
|
||||
template <typename T> struct TIsVolatile : TBoolConstant<NAMESPACE_STD::is_volatile_v<T>> { };
|
||||
@ -37,9 +36,8 @@ struct TIsEnumConvertibleToInt : TBoolConstant<sizeof(Resolve(T())) - 1> { };
|
||||
NAMESPACE_PRIVATE_END
|
||||
|
||||
template <typename T>
|
||||
struct TIsScopedEnum : TAnd<TIsEnum<T>, TNot<NAMESPACE_PRIVATE::TIsEnumConvertibleToInt<T>>> { };
|
||||
struct TIsScopedEnum : TBoolConstant<TIsEnum<T>::Value && !NAMESPACE_PRIVATE::TIsEnumConvertibleToInt<T>::Value> { };
|
||||
|
||||
NAMESPACE_END(TypeTraits)
|
||||
NAMESPACE_MODULE_END(Utility)
|
||||
NAMESPACE_MODULE_END(Redcraft)
|
||||
NAMESPACE_REDCRAFT_END
|
||||
|
Reference in New Issue
Block a user