35#ifndef _BLAZE_MATH_TRAITS_MULTTRAIT_H_
36#define _BLAZE_MATH_TRAITS_MULTTRAIT_H_
64template<
typename,
typename,
typename =
void >
struct MultTrait;
65template<
typename,
typename,
typename =
void >
struct MultTraitEval1;
66template<
typename,
typename,
typename =
void >
struct MultTraitEval2;
67template<
typename,
typename,
typename =
void >
struct MultTraitEval3;
74template<
typename T1,
typename T2 >
75auto evalMultTrait(
const volatile T1&,
const volatile T2& ) -> MultTraitEval1<T1,T2>;
129 :
public decltype( evalMultTrait( std::declval<T1&>(), std::declval<T2&>() ) )
139template<
typename T1,
typename T2 >
164template<
typename T1,
typename T2 >
178 :
public MultTraitEval2<T1,T2>
190struct MultTraitEval1<GroupTag<ID>,GroupTag<ID>,void>
194 using Type = GroupTag<ID>;
206template<
size_t ID,
typename T2 >
207struct MultTraitEval1< GroupTag<ID>, T2 >
211 using Type = GroupTag<ID>;
223template<
typename T1,
size_t ID >
224struct MultTraitEval1< T1, GroupTag<ID> >
228 using Type = GroupTag<ID>;
244 :
public MultTraitEval3<T1,T2>
255template<
typename T1,
typename T2 >
256struct MultTraitEval2< T1, T2
258 IsColumnVector_v<T2> > >
262 using Type = MultTrait_t< typename T1::ElementType, typename T2::ElementType >;
290struct MultTraitEval3< T1, T2
291 ,
Void_t< decltype( std::declval<T1>() * std::declval<T2>() ) > >
295 using Type = RemoveCVRef_t< decltype( std::declval<T1>() * std::declval<T2>() ) >;
Header file for the CommonType type trait.
Header file for the EnableIf class template.
Header file for the GroupTag class template.
Header file for the IsColumnVector type trait.
Header file for the IsNumeric type trait.
Header file for the IsRowVector type trait.
Header file for the RemoveCVRef type trait.
typename MultTrait< T1, T2 >::Type MultTrait_t
Auxiliary alias declaration for the MultTrait class template.
Definition: MultTrait.h:165
constexpr bool IsRowVector_v
Auxiliary variable template for the IsRowVector type trait.
Definition: IsRowVector.h:126
constexpr bool IsNumeric_v
Auxiliary variable template for the IsNumeric type trait.
Definition: IsNumeric.h:132
typename CommonType< T... >::Type CommonType_t
Auxiliary alias declaration for the CommonType type trait.
Definition: CommonType.h:95
void Void_t
Compile time type check.
Definition: Void.h:64
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
Base template for the MultTrait class.
Definition: MultTrait.h:130
Header file for the Void type trait.