35 #ifndef _BLAZE_MATH_TRAITS_CROSSTRAIT_H_ 36 #define _BLAZE_MATH_TRAITS_CROSSTRAIT_H_ 59 template<
typename,
typename,
typename =
void >
struct CrossTrait;
60 template<
typename,
typename,
typename =
void >
struct CrossTraitEval1;
61 template<
typename,
typename,
typename =
void >
struct CrossTraitEval2;
68 template<
typename T1,
typename T2 >
69 auto evalCrossTrait( T1&, T2& )
70 ->
typename CrossTraitEval1<T1,T2>::Type;
72 template<
typename T1,
typename T2 >
73 auto evalCrossTrait(
const T1&,
const T2& )
74 ->
typename CrossTrait<T1,T2>::Type;
76 template<
typename T1,
typename T2 >
77 auto evalCrossTrait(
const volatile T1&,
const T2& )
78 ->
typename CrossTrait<T1,T2>::Type;
80 template<
typename T1,
typename T2 >
81 auto evalCrossTrait(
const T1&,
const volatile T2& )
82 ->
typename CrossTrait<T1,T2>::Type;
84 template<
typename T1,
typename T2 >
85 auto evalCrossTrait(
const volatile T1&,
const volatile T2& )
86 ->
typename CrossTrait<T1,T2>::Type;
135 template<
typename T1
143 using Type = decltype( evalCrossTrait( std::declval<T1&>(), std::declval<T2&>() ) );
163 template<
typename T1,
typename T2 >
173 template<
typename T1
176 struct CrossTraitEval1
180 using Type =
typename CrossTraitEval2<T1,T2>::Type;
192 template<
typename T1
195 struct CrossTraitEval2
199 using Type = INVALID_TYPE;
Base template for the CrossTrait class.
Definition: CrossTrait.h:138
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Header file for the If class template.
Header file for the EnableIf class template.
typename CrossTrait< T1, T2 >::Type CrossTrait_t
Auxiliary alias declaration for the CrossTrait class template.The CrossTrait_t alias declaration prov...
Definition: CrossTrait.h:164
Utility type for generic codes.