Implementation details¶
Helper C++ classes, functions and namespaces.
|
Typedef remove_cvref_t |
|
Class is_batch |
|
Class is_expr |
|
Class is_valid_expr |
|
Class expr_size_impl |
|
Class expr_maker |
|
Function make_expr |
Typedefs¶
-
using
xsimd::details
::
remove_cvref_t
= std::remove_cv_t<std::remove_reference_t<T>>¶ Convenience template alias.
Classes¶
-
template<typename
T
>
classis_batch
: public false_type¶ Type trait class to detect batch<T, N> values.
General implementation for all types
Specialization for batch<T, N>
-
template<typename
T
>
classis_expr
: public false_type¶ Type trait class to detect expr_base<T> values.
General implementation for all types
Specialization for expr_base<T>
-
template<typename
T
, typenameU
= remove_cvref_t<T>>
classis_valid_expr
: public std::conditional_t<std::is_arithmetic<U>::value || (is_batch<U>::value && !std::is_convertible<U *, simd_base<U> *>::value) || std::is_convertible<U *, expr_base<U> *>::value, std::true_type, std::false_type>¶ Type trait class to detect valid expressions.
A valid expression for our purposes is either:
an arithmetic value
a batch<T, N> value (provided that it does not inherit from simd_base since those are from the XSIMD library)
a class inheriting from expr_base
-
template<typename
T
>
classexpr_size_impl
¶ Trait class to calculate the size of an expression.