35#ifndef _BLAZE_MATH_TRAITS_SUBTRAIT_H_
36#define _BLAZE_MATH_TRAITS_SUBTRAIT_H_
62template<
typename,
typename,
typename =
void >
struct SubTrait;
63template<
typename,
typename,
typename =
void >
struct SubTraitEval1;
64template<
typename,
typename,
typename =
void >
struct SubTraitEval2;
65template<
typename,
typename,
typename =
void >
struct SubTraitEval3;
72template<
typename T1,
typename T2 >
73auto evalSubTrait(
const volatile T1&,
const volatile T2& ) -> SubTraitEval1<T1,T2>;
127 :
public decltype( evalSubTrait( std::declval<T1&>(), std::declval<T2&>() ) )
137template<
typename T1,
typename T2 >
162template<
typename T1,
typename T2 >
176 :
public SubTraitEval2<T1,T2>
188struct SubTraitEval1<GroupTag<ID>,GroupTag<ID>,void>
192 using Type = GroupTag<ID>;
208 :
public SubTraitEval3<T1,T2>
235struct SubTraitEval3< T1, T2
236 ,
Void_t< decltype( std::declval<T1>() - std::declval<T2>() ) > >
240 using Type = RemoveCVRef_t< decltype( std::declval<T1>() - std::declval<T2>() ) >;
Header file for the CommonType type trait.
Header file for the EnableIf class template.
Header file for the GroupTag class template.
Header file for the IsNumeric type trait.
Header file for the RemoveCVRef type trait.
typename SubTrait< T1, T2 >::Type SubTrait_t
Auxiliary alias declaration for the SubTrait class template.
Definition: SubTrait.h:163
constexpr bool IsNumeric_v
Auxiliary variable template for the IsNumeric type trait.
Definition: IsNumeric.h:132
typename CommonType< T... >::Type CommonType_t
Auxiliary alias declaration for the CommonType type trait.
Definition: CommonType.h:95
void Void_t
Compile time type check.
Definition: Void.h:64
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
Base template for the SubTrait class.
Definition: SubTrait.h:128
Header file for the Void type trait.