35 #ifndef _BLAZE_MATH_TRAITS_REDUCETRAIT_H_ 36 #define _BLAZE_MATH_TRAITS_REDUCETRAIT_H_ 59 template<
typename,
typename,
size_t... >
struct ReduceTrait;
60 template<
typename,
typename,
typename =
void >
struct TotalReduceTraitEval1;
61 template<
typename,
typename,
typename =
void >
struct TotalReduceTraitEval2;
62 template<
typename,
typename,
size_t,
typename =
void >
struct PartialReduceTraitEval1;
63 template<
typename,
typename,
size_t,
typename =
void >
struct PartialReduceTraitEval2;
70 template<
size_t RF,
typename T,
typename OP >
71 auto evalReduceTrait( T&, OP )
72 ->
typename PartialReduceTraitEval1<T,OP,RF>::Type;
74 template<
typename T,
typename OP >
75 auto evalReduceTrait( T&, OP )
76 ->
typename TotalReduceTraitEval1<T,OP>::Type;
78 template<
size_t RF,
typename T,
typename OP >
79 auto evalReduceTrait(
const T&, OP )
80 ->
typename ReduceTrait<T,OP,RF>::Type;
82 template<
typename T,
typename OP >
83 auto evalReduceTrait(
const T&, OP )
84 ->
typename ReduceTrait<T,OP>::Type;
86 template<
size_t RF,
typename T,
typename OP >
87 auto evalReduceTrait(
const volatile T&, OP )
88 ->
typename ReduceTrait<T,OP,RF>::Type;
90 template<
typename T,
typename OP >
91 auto evalReduceTrait(
const volatile T&, OP )
92 ->
typename ReduceTrait<T,OP>::Type;
150 using Type = decltype( evalReduceTrait<RF...>( std::declval<T&>(), std::declval<OP>() ) );
185 struct TotalReduceTraitEval1
189 using Type =
typename TotalReduceTraitEval2<T,OP>::Type;
204 struct TotalReduceTraitEval2
208 using Type = ElementType_t<T>;
224 struct PartialReduceTraitEval1
228 using Type =
typename PartialReduceTraitEval2<T,OP,RF>::Type;
244 struct PartialReduceTraitEval2
248 using Type = INVALID_TYPE;
Header file for auxiliary alias declarations.
Header file for basic type definitions.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
typename ReduceTrait< T, OP, RF... >::Type ReduceTrait_t
Auxiliary alias declaration for the ReduceTrait class template.The ReduceTrait_t alias declaration pr...
Definition: ReduceTrait.h:173
Utility type for generic codes.
Base template for the ReduceTrait class.
Definition: ReduceTrait.h:145