35 #ifndef NEKTAR_LIB_LIBUTILITES_SIMDLIB_TRAITS_H
36 #define NEKTAR_LIB_LIBUTILITES_SIMDLIB_TRAITS_H
38 #include <type_traits>
53 std::is_same<is_not_reused_t, typename std::remove_cv<T>::type>::value
60 std::is_same<is_aligned_t, typename std::remove_cv<T>::type>::value ||
61 is_streaming<T>::value
72 template <
class T,
class U =
unsigned int>
76 struct has_width <T, decltype((
void) T::width, 0u)> : std::true_type {};
79 template <
class T,
class U =
unsigned int>
90 template <
class,
class =
void_t<>>
99 <bool, has_alignment<T>::value && has_width<T>::value &&
100 has_scalarType<T>::value> {};
108 template <
class T,
class =
void>
114 typename std::enable_if<
115 is_vector<T>::value>::type
116 > : std::integral_constant
117 <bool, std::is_floating_point<typename T::scalarType>::value> {};
124 template <
class T,
class =
void>
130 typename std::enable_if<
131 is_vector<T>::value>::type
132 > : std::integral_constant
133 <bool, std::is_integral<typename T::scalarType>::value> {};
static constexpr struct tinysimd::is_aligned_t is_aligned
static constexpr struct tinysimd::is_not_aligned_t is_not_aligned
static constexpr struct tinysimd::is_not_reused_t is_not_reused
typename make_void< Ts... >::type void_t