E.V.E
v2023.02.15
 
Loading...
Searching...
No Matches
Type traits

Detailed Description

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>

Classes

struct  eve::abi< Type, Lanes >
 Find proper ABI for Type/Lanes pair. More...
 
struct  eve::as< T >
 Lightweight type-wrapper. More...
 
struct  eve::as_element< T >
 Lightweight type-wrapper over element type. More...
 
struct  eve::cardinal< Type >
 Computes the cardinal of a given type. More...
 
struct  eve::common_compatible< Ts >
 Computes the type compatible with a list of values. More...
 
struct  eve::common_type< Ts >
 Computes a type that can represent all values in a list of types. More...
 
struct  eve::element_type< T >
 Extracts the scalar part of a type. More...
 
struct  eve::underlying_type< Ts >
 Computes the most scalar type associated with a type. More...
 

Typedefs

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 > >
 

Variables

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.