35#ifndef _BLAZE_MATH_TRAITS_REDUCETRAIT_H_
36#define _BLAZE_MATH_TRAITS_REDUCETRAIT_H_
61template<
typename,
typename,
ReductionFlag... >
struct ReduceTrait;
62template<
typename,
typename,
typename =
void >
struct TotalReduceTraitEval1;
63template<
typename,
typename,
typename =
void >
struct TotalReduceTraitEval2;
64template<
typename,
typename, ReductionFlag,
typename =
void >
struct PartialReduceTraitEval1;
65template<
typename,
typename, ReductionFlag,
typename =
void >
struct PartialReduceTraitEval2;
72template< ReductionFlag RF,
typename T,
typename OP >
73auto evalReduceTrait(
const volatile T&, OP ) -> PartialReduceTraitEval1<T,OP,RF>;
75template<
typename T,
typename OP >
76auto evalReduceTrait(
const volatile T&, OP ) -> TotalReduceTraitEval1<T,OP>;
129 :
public decltype( evalReduceTrait<RF...>( std::declval<T&>(), std::declval<OP>() ) )
162struct TotalReduceTraitEval1
163 :
public TotalReduceTraitEval2<T,OP>
177struct TotalReduceTraitEval2
194 using Type =
decltype( std::declval<OP>()( std::declval< ElementType_t<T> >()
195 , std::declval< ElementType_t<T> >() ) );
211struct PartialReduceTraitEval1
212 :
public PartialReduceTraitEval2<T,OP,RF>
227struct PartialReduceTraitEval2
Header file for auxiliary alias declarations.
Header file for the IsMatrix type trait.
Header file for the IsVector type trait.
Header file for the reduction flags.
size_t ReductionFlag
Type of the reduction flags.
Definition: ReductionFlag.h:57
typename ReduceTrait< T, OP, RF... >::Type ReduceTrait_t
Auxiliary alias declaration for the ReduceTrait class template.
Definition: ReduceTrait.h:150
constexpr bool IsVector_v
Auxiliary variable template for the IsVector type trait.
Definition: IsVector.h:125
constexpr bool IsMatrix_v
Auxiliary variable template for the IsMatrix type trait.
Definition: IsMatrix.h:124
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
Base template for the ReduceTrait class.
Definition: ReduceTrait.h:130
Header file for basic type definitions.