35 #ifndef _BLAZE_MATH_TRAITS_EXPANDTRAIT_H_ 36 #define _BLAZE_MATH_TRAITS_EXPANDTRAIT_H_ 59 template<
typename,
size_t... >
struct ExpandTrait;
60 template<
typename,
size_t,
typename =
void >
struct ExpandTraitEval1;
61 template<
typename,
size_t,
typename =
void >
struct ExpandTraitEval2;
68 template<
size_t E,
typename T >
69 auto evalExpandTrait( T& )
70 ->
typename ExpandTraitEval1<T,E>::Type;
72 template<
typename T >
73 auto evalExpandTrait( T& )
74 ->
typename ExpandTraitEval1<T,inf>::Type;
76 template<
size_t E,
typename T >
77 auto evalExpandTrait(
const T& )
78 ->
typename ExpandTrait<T,E>::Type;
80 template<
typename T >
81 auto evalExpandTrait(
const T& )
82 ->
typename ExpandTrait<T>::Type;
84 template<
size_t E,
typename T >
85 auto evalExpandTrait(
const volatile T& )
86 ->
typename ExpandTrait<T,E>::Type;
88 template<
typename T >
89 auto evalExpandTrait(
const volatile T& )
90 ->
typename ExpandTrait<T>::Type;
149 using Type = decltype( evalExpandTrait<CEAs...>( std::declval<T&>() ) );
183 struct ExpandTraitEval1
187 using Type =
typename ExpandTraitEval2<T,E>::Type;
199 template<
typename MT
202 struct ExpandTraitEval2
206 using Type = INVALID_TYPE;
Header file for basic type definitions.
Base template for the ExpandTrait class.
Definition: ExpandTrait.h:144
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Numerical infinity for built-in data types.
Utility type for generic codes.
typename ExpandTrait< T, CEAs... >::Type ExpandTrait_t
Auxiliary alias declaration for the ExpandTrait type trait.The ExpandTrait_t alias declaration provid...
Definition: ExpandTrait.h:171