35 #ifndef _BLAZE_MATH_TRAITS_CROSSTRAIT_H_ 36 #define _BLAZE_MATH_TRAITS_CROSSTRAIT_H_ 60 template<
typename,
typename,
typename =
void >
struct CrossTrait;
61 template<
typename,
typename,
typename =
void >
struct CrossTraitEval1;
62 template<
typename,
typename,
typename =
void >
struct CrossTraitEval2;
69 template<
typename T1,
typename T2 >
70 auto evalCrossTrait( T1&, T2& )
71 ->
typename CrossTraitEval1<T1,T2>::Type;
73 template<
typename T1,
typename T2 >
74 auto evalCrossTrait(
const T1&,
const T2& )
75 ->
typename CrossTrait<T1,T2>::Type;
77 template<
typename T1,
typename T2 >
78 auto evalCrossTrait(
const volatile T1&,
const T2& )
79 ->
typename CrossTrait<T1,T2>::Type;
81 template<
typename T1,
typename T2 >
82 auto evalCrossTrait(
const T1&,
const volatile T2& )
83 ->
typename CrossTrait<T1,T2>::Type;
85 template<
typename T1,
typename T2 >
86 auto evalCrossTrait(
const volatile T1&,
const volatile T2& )
87 ->
typename CrossTrait<T1,T2>::Type;
136 template<
typename T1
144 using Type = decltype( evalCrossTrait( std::declval<T1&>(), std::declval<T2&>() ) );
164 template<
typename T1,
typename T2 >
174 template<
typename T1
177 struct CrossTraitEval1
181 using Type =
typename CrossTraitEval2<T1,T2>::Type;
193 template<
typename T1
196 struct CrossTraitEval2
200 using Type = INVALID_TYPE;
Base template for the CrossTrait class.
Definition: CrossTrait.h:139
Header file for the Decay type trait.
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:165
Utility type for generic codes.