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 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 RemoveCVRef type trait.
Header file for the HasSub 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.
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.
Base template for the SubTrait class.
Definition: SubTrait.h:144