Using EVE types and functions may require informations about some properties of the processed types that are accessible through the following traits.
Convenience header:
#include <eve/traits.hpp>
|
template<typename T > |
using | eve::iterator_cardinal_t = decltype(detail::iterator_cardinal_impl<T>()) |
| A meta-function that returns a cardinal for a relaxed iterator/range. If T defines a nested static function iterator_cardinal() (which should return eve::fixed)
|
|
template<typename T > |
using | eve::value_type_t = typename decltype(detail::value_type_impl<T>())::type |
| A meta function for getting an associated value_type for a relaxed iterator/range.
|
|
template<typename T > |
using | eve::wide_value_type_t = as_wide_t<value_type_t<T>, iterator_cardinal_t<T>> |
|
|
template<typename T > |
constexpr std::size_t | eve::max_scalar_size_v |
| A meta function for getting a maximum size of scalar.
|
|
template<typename... Ts> |
constexpr bool | eve::same_lanes_or_scalar = detail::lanes_check<Ts...>() |
| Checks that all types Ts are either scalar or share a common number of lanes.
|
|
template<typename T > |
constexpr bool | eve::same_lanes_or_scalar_tuple = detail::tuple_lanes_check<T>() |
| Checks that all types within a product type are either scalar or share a common number of lanes.
|
|
template<simd_value T0, simd_value... Ts> |
constexpr bool | eve::same_lanes = ((cardinal_v<T0> == cardinal_v<Ts>) && ... && true) |
| Checks that all SIMD types Ts share a common number of lanes.
|
|