11 #ifndef __SYS_TYPETRAITS_H_INCLUDED__
12 #define __SYS_TYPETRAITS_H_INCLUDED__
15 #include <type_traits>
17 namespace SYS_TypeTraitsImpl
22 template <
typename T>
struct AddIntegralNoCV : std::integral_constant< bool, false > {};
24 template <
typename T>
struct AddPodNoCV : std::integral_constant< bool, false > {};
33 template<
typename T >
35 std::is_integral< T >::value ||
36 SYS_TypeTraitsImpl::AddIntegralNoCV< std::remove_cv_t< T > >::value
39 template<
typename T >
45 template<
typename T >
47 std::is_floating_point< T >::value ||
48 SYS_TypeTraitsImpl::AddFloatingPointNoCV< std::remove_cv_t< T > >::value
51 template<
typename T >
57 template<
typename T >
59 std::is_pod< T >::value ||
60 SYS_TypeTraitsImpl::AddPodNoCV< std::remove_cv_t< T > >::value
63 template<
typename T >
70 return SYS_IsPod_v< T >;
79 ( SYS_IsIntegral< T >::value || SYS_IsFloatingPoint< T >::value )
82 template<
typename T >
94 template <
typename T1,
typename T2>
97 template <
typename T1,
typename T2>
100 template <
typename T1,
typename T2>
103 return SYS_IsSame_v< T1, T2 >;
111 template <
typename T>
114 template <
typename U>
117 template <
typename T>
127 template<
typename T >
130 template<
typename T >
139 template<
typename T >
141 std::remove_cv_t< std::remove_reference_t< T > >
144 template<
typename T >
155 template<
typename T >
157 std::is_same< T, SYS_RemoveCVRef_t< T > >::value
160 template<
typename T >
171 template<
typename T,
bool MAKE_CONST>
177 template<
typename T,
bool MAKE_CONST>
186 template<
typename T0,
typename T1,
bool IST1>
189 template<
typename T0,
typename T1>
192 template<
typename T0,
typename T1,
bool IST1>
200 template <
bool B,
typename T =
void>
203 template <
bool B,
typename T =
void>
208 template <
typename T, std::
size_t N>
210 SYSarraySize(
const T (&)[
N]) noexcept
215 #endif // __SYS_TYPETRAITS_H_INCLUDED__
constexpr auto SYS_IsIntegral_v
constexpr auto SYS_IsPod_v
typename SYS_TypeIdentity< T >::type SYS_TypeIdentity_t
constexpr auto SYS_IsSame_v
std::integral_constant< bool, std::numeric_limits< T >::is_signed||std::is_same< T, int128_t >::value > is_signed
typename SYS_RemoveCVRef< T >::type SYS_RemoveCVRef_t
constexpr auto SYS_IsFloatingPoint_v
typename SYS_ConstType< T, MAKE_CONST >::type SYS_ConstType_t
constexpr auto SYS_HasNoCVRef_v
Check whether an arithmetic type is signed.
std::remove_cv_t< std::remove_reference_t< T > > type
typename SYS_SelectType< T0, T1, IST1 >::type SYS_SelectType_t
constexpr auto SYS_IsPointer_v
constexpr auto SYS_IsArithmetic_v
GA_API const UT_StringHolder N
constexpr auto SYS_IsSigned_v