11 #ifndef __SYS_TYPETRAITS_H_INCLUDED__
12 #define __SYS_TYPETRAITS_H_INCLUDED__
16 #include <type_traits>
28 template<
typename ... >
34 template<
typename T >
36 std::is_integral< T >::value ||
37 AddIntegralNoCV< std::remove_cv_t< T > >::value
40 template<
typename T >
46 template<
typename T >
48 std::is_floating_point< T >::value ||
49 AddFloatingPointNoCV< std::remove_cv_t< T > >::value
52 template<
typename T >
58 template<
typename T >
60 std::is_pod< T >::value ||
61 AddPodNoCV< std::remove_cv_t< T > >::value
64 template<
typename T >
71 return SYS_IsPod_v< T >;
77 template<
typename T >
79 std::is_fundamental< T >::value ||
80 std::is_enum< T >::value ||
81 std::is_pointer< T >::value ||
82 SafeTrivialRelocationNoCV< std::remove_cv_t< T > >::value
85 template<
typename T >
94 ( SYS_IsIntegral< T >::value || SYS_IsFloatingPoint< T >::value )
97 template<
typename T >
101 template <
typename T>
104 template <
typename T>
111 template<
typename T,
typename U >
115 template<
typename T >
118 template<
typename T,
typename U >
121 template <
typename T1,
typename T2>
124 return SYS_IsSame_v< T1, T2 >;
132 template <
typename T>
135 template <
typename U>
138 template <
typename T>
148 template<
typename T >
151 template<
typename T >
160 template<
typename T >
162 SYS_RemoveCV_t< std::remove_reference_t< T > >
165 template<
typename T >
176 template<
typename T >
178 std::is_same< T, SYS_RemoveCVRef_t< T > >::value
181 template<
typename T >
192 template<
typename T,
bool MAKE_CONST>
198 template<
typename T,
bool MAKE_CONST>
207 template<
typename T0,
typename T1,
bool IST1>
210 template<
typename T0,
typename T1>
213 template<
typename T0,
typename T1,
bool IST1>
221 template <
bool B,
typename T =
void>
224 template <
bool B,
typename T =
void>
227 template <
bool B,
typename T =
void>
230 template <
bool B,
typename T =
void>
235 template <
typename T, std::
size_t N>
237 SYSarraySize(
const T (&)[
N]) noexcept
251 template<
typename T >
254 template<
typename T >
263 template<
typename T >
266 template<
typename T >
276 template<
typename T >
279 template<
typename T >
291 template<
typename T,
typename E, std::
size_t N >
293 SYS_IsFixedArray_v< T > &&
294 ( std::is_same< SYS_FixedArrayElement_t< std::remove_cv_t< T > >, E >::value ) &&
295 ( SYS_FixedArraySize_v< T > == N )
298 template<
typename T,
typename E, std::
size_t N >
311 template<
typename T,
typename E, std::
size_t N >
313 SYS_IsFixedArray_v< T > &&
314 ( std::is_same< std::remove_cv_t< SYS_FixedArrayElement_t< std::remove_cv_t< T > > >, E >::value ) &&
315 ( SYS_FixedArraySize_v< T > == N )
318 static_assert( SYS_HasNoCVRef_v< E > );
321 template<
typename T,
typename E, std::
size_t N >
333 template<
typename T,
typename E >
337 static_assert( SYS_IsFixedArray_v< T > );
340 template<
typename T,
typename E >
353 template<
typename T,
typename E >
355 SYS_IsSame< SYS_RemoveCV_t< SYS_FixedArrayElement_t< T > >, E >
357 static_assert( SYS_IsFixedArray_v< T > );
358 static_assert( SYS_HasNoCVRef_v< E > );
361 template<
typename T,
typename E >
368 template<
typename T, std::
size_t N >
371 template<
typename T, std::
size_t N >
374 template<
typename T, std::
size_t N >
377 #endif // __SYS_TYPETRAITS_H_INCLUDED__
constexpr auto SYS_IsIntegral_v
constexpr auto SYS_IsPod_v
typename SYS_TypeIdentity< T >::type SYS_TypeIdentity_t
void SYS_Void_t
Alternative for C++17's std::void that can be used in C++14:
typename SYS_FixedArrayElement< T >::type SYS_FixedArrayElement_t
constexpr auto SYS_IsSame_v
constexpr bool SYS_FixedArrayHasElementNoCV_v
typename SYS_DisableIf< B, T >::type SYS_DisableIf_t
typename SYS_RemoveCVRef< T >::type SYS_RemoveCVRef_t
constexpr bool SYS_IsFixedArray_v
typename SYS_EnableIf< B, T >::type SYS_EnableIf_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.
SYS_RemoveCV_t< std::remove_reference_t< T > > type
typename SYS_SelectType< T0, T1, IST1 >::type SYS_SelectType_t
constexpr bool SYS_FixedArrayHasElement_v
constexpr bool SYS_IsFixedArrayOfNoCV_v
constexpr auto SYS_IsPointer_v
constexpr bool SYS_IsFixedArrayOf_v
constexpr auto SYS_IsTriviallyRelocatable_v
constexpr auto SYS_IsArithmetic_v
GA_API const UT_StringHolder N
constexpr std::size_t SYS_FixedArraySize_v
constexpr auto SYS_IsSigned_v