35 #ifndef _BLAZE_MATH_TRAITS_SUBTRAIT_H_ 36 #define _BLAZE_MATH_TRAITS_SUBTRAIT_H_ 64 template<
typename,
typename,
typename =
void >
struct SubTrait;
65 template<
typename,
typename,
typename =
void >
struct SubTraitEval1;
66 template<
typename,
typename,
typename =
void >
struct SubTraitEval2;
73 template<
typename T1,
typename T2 >
74 auto evalSubTrait( T1&, T2& )
75 ->
typename SubTraitEval1<T1,T2>::Type;
77 template<
typename T1,
typename T2 >
78 auto evalSubTrait(
const T1&,
const T2& )
79 ->
typename SubTrait<T1,T2>::Type;
81 template<
typename T1,
typename T2 >
82 auto evalSubTrait(
const volatile T1&,
const T2& )
83 ->
typename SubTrait<T1,T2>::Type;
85 template<
typename T1,
typename T2 >
86 auto evalSubTrait(
const T1&,
const volatile T2& )
87 ->
typename SubTrait<T1,T2>::Type;
89 template<
typename T1,
typename T2 >
90 auto evalSubTrait(
const volatile T1&,
const volatile T2& )
91 ->
typename SubTrait<T1,T2>::Type;
141 template<
typename T1
149 using Type = decltype( evalSubTrait( std::declval<T1&>(), std::declval<T2&>() ) );
161 template<
typename T >
178 template<
typename T1,
typename T2 >
183 using Type = CommonType_t< complex<T1> , T2 >;
195 template<
typename T1,
typename T2 >
200 using Type = CommonType_t< T1, complex<T2> >;
212 template<
typename T1,
typename T2 >
213 struct SubTrait< complex<T1>, complex<T2> >
217 using Type = CommonType_t< complex<T1>, complex<T2> >;
237 template<
typename T1,
typename T2 >
247 template<
typename T1
254 using Type =
typename SubTraitEval2<T1,T2>::Type;
266 template<
typename T1
273 struct SubType {
using Type = decltype( std::declval<T1>() - std::declval<T2>() ); };
274 struct Failure {
using Type = INVALID_TYPE; };
279 using Type =
typename If_t< HasSub_v<T1,T2>, SubType, Failure >::Type;
typename Decay< T >::Type Decay_t
Auxiliary alias declaration for the Decay type trait.The Decay_t alias declaration provides a conveni...
Definition: Decay.h:98
typename SubTrait< T1, T2 >::Type SubTrait_t
Auxiliary alias declaration for the SubTrait class template.The SubTrait_t alias declaration provides...
Definition: SubTrait.h:238
Header file for the HasSub type trait.
Header file for the Decay 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.
Utility type for generic codes.
Header file for the IsBuiltin type trait.
Header file for the complex data type.
Base template for the SubTrait class.
Definition: SubTrait.h:144