35 #ifndef _BLAZE_MATH_TRAITS_DIVTRAIT_H_ 36 #define _BLAZE_MATH_TRAITS_DIVTRAIT_H_ 64 template<
typename,
typename,
typename =
void >
struct DivTrait;
65 template<
typename,
typename,
typename =
void >
struct DivTraitEval1;
66 template<
typename,
typename,
typename =
void >
struct DivTraitEval2;
73 template<
typename T1,
typename T2 >
74 auto evalDivTrait( T1&, T2& )
75 ->
typename DivTraitEval1<T1,T2>::Type;
77 template<
typename T1,
typename T2 >
78 auto evalDivTrait(
const T1&,
const T2& )
79 ->
typename DivTrait<T1,T2>::Type;
81 template<
typename T1,
typename T2 >
82 auto evalDivTrait(
const volatile T1&,
const T2& )
83 ->
typename DivTrait<T1,T2>::Type;
85 template<
typename T1,
typename T2 >
86 auto evalDivTrait(
const T1&,
const volatile T2& )
87 ->
typename DivTrait<T1,T2>::Type;
89 template<
typename T1,
typename T2 >
90 auto evalDivTrait(
const volatile T1&,
const volatile T2& )
91 ->
typename DivTrait<T1,T2>::Type;
142 template<
typename T1
150 using Type = decltype( evalDivTrait( std::declval<T1&>(), std::declval<T2&>() ) );
162 template<
typename T >
179 template<
typename T1,
typename T2 >
184 using Type = CommonType_t< complex<T1> , T2 >;
196 template<
typename T1,
typename T2 >
201 using Type = CommonType_t< T1, complex<T2> >;
213 template<
typename T1,
typename T2 >
214 struct DivTrait< complex<T1>, complex<T2> >
218 using Type = CommonType_t< complex<T1>, complex<T2> >;
238 template<
typename T1,
typename T2 >
248 template<
typename T1
255 using Type =
typename DivTraitEval2<T1,T2>::Type;
267 template<
typename T1
274 struct DivType {
using Type = decltype( std::declval<T1>() / std::declval<T2>() ); };
275 struct Failure {
using Type = INVALID_TYPE; };
280 using Type =
typename If_t< HasDiv_v<T1,T2>, DivType, Failure >::Type;
typename DivTrait< T1, T2 >::Type DivTrait_t
Auxiliary alias declaration for the DivTrait class template.The DivTrait_t alias declaration provides...
Definition: DivTrait.h:239
Header file for the RemoveCVRef type trait.
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.The EnableIf_t alias declaration provides a convenient...
Definition: EnableIf.h:138
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Header file for the If class template.
constexpr bool IsBuiltin_v
Auxiliary variable template for the IsBuiltin type trait.The IsBuiltin_v variable template provides a...
Definition: IsBuiltin.h:95
Header file for the EnableIf class template.
Header file for the CommonType type trait.
Header file for the HasDiv type trait.
Utility type for generic codes.
Base template for the DivTrait class.
Definition: DivTrait.h:145
typename RemoveCVRef< T >::Type RemoveCVRef_t
Auxiliary alias declaration for the RemoveCVRef type trait.The RemoveCVRef_t alias declaration provid...
Definition: RemoveCVRef.h:99
Header file for the IsBuiltin type trait.
Header file for the complex data type.