35 #ifndef _BLAZE_MATH_TRAITS_MAPTRAIT_H_ 36 #define _BLAZE_MATH_TRAITS_MAPTRAIT_H_ 57 template<
typename... >
struct MapTrait;
58 template<
typename,
typename,
typename =
void >
struct UnaryMapTraitEval1;
59 template<
typename,
typename,
typename =
void >
struct UnaryMapTraitEval2;
60 template<
typename,
typename,
typename,
typename =
void >
struct BinaryMapTraitEval1;
61 template<
typename,
typename,
typename,
typename =
void >
struct BinaryMapTraitEval2;
68 template<
typename T,
typename OP >
69 auto evalMapTrait( T&, OP )
70 ->
typename UnaryMapTraitEval1<T,OP>::Type;
72 template<
typename T,
typename OP >
73 auto evalMapTrait(
const T&, OP )
74 ->
typename MapTrait<T,OP>::Type;
76 template<
typename T,
typename OP >
77 auto evalMapTrait(
const volatile T&, OP )
78 ->
typename MapTrait<T,OP>::Type;
80 template<
typename T1,
typename T2,
typename OP >
81 auto evalMapTrait( T1&, T2&, OP )
82 ->
typename BinaryMapTraitEval1<T1,T2,OP>::Type;
84 template<
typename T1,
typename T2,
typename OP >
85 auto evalMapTrait(
const T1&,
const T2&, OP )
86 ->
typename MapTrait<T1,T2,OP>::Type;
88 template<
typename T1,
typename T2,
typename OP >
89 auto evalMapTrait(
const T1&,
const volatile T2&, OP )
90 ->
typename MapTrait<T1,T2,OP>::Type;
92 template<
typename T1,
typename T2,
typename OP >
93 auto evalMapTrait(
const volatile T1&,
const T2&, OP )
94 ->
typename MapTrait<T1,T2,OP>::Type;
96 template<
typename T1,
typename T2,
typename OP >
97 auto evalMapTrait(
const volatile T1&,
const volatile T2&, OP )
98 ->
typename MapTrait<T1,T2,OP>::Type;
133 template<
typename... Args >
139 using Type = decltype( evalMapTrait( std::declval<Args&>()... ) );
159 template<
typename... Args >
172 struct UnaryMapTraitEval1
176 using Type =
typename UnaryMapTraitEval2<T,OP>::Type;
191 struct UnaryMapTraitEval2
195 using Type = Decay_t< decltype( std::declval<OP>()( std::declval<T>() ) ) >;
207 template<
typename T1
211 struct BinaryMapTraitEval1
215 using Type =
typename BinaryMapTraitEval2<T1,T2,OP>::Type;
227 template<
typename T1
231 struct BinaryMapTraitEval2
235 using Type = Decay_t< decltype( std::declval<OP>()( std::declval<T1>(), std::declval<T2>() ) ) >;
typename MapTrait< Args... >::Type MapTrait_t
Auxiliary alias declaration for the MapTrait class template.The MapTrait_t alias declaration provides...
Definition: MapTrait.h:160
Header file for the Decay type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Base template for the MapTrait class.
Definition: MapTrait.h:134