35#ifndef _BLAZE_MATH_TRAITS_ADDTRAIT_H_
36#define _BLAZE_MATH_TRAITS_ADDTRAIT_H_
62template<
typename,
typename,
typename =
void >
struct AddTrait;
63template<
typename,
typename,
typename =
void >
struct AddTraitEval1;
64template<
typename,
typename,
typename =
void >
struct AddTraitEval2;
65template<
typename,
typename,
typename =
void >
struct AddTraitEval3;
72template<
typename T1,
typename T2 >
73auto evalAddTrait(
const volatile T1&,
const volatile T2& ) -> AddTraitEval1<T1,T2>;
127 :
public decltype( evalAddTrait( std::declval<T1&>(), std::declval<T2&>() ) )
137template<
typename T1,
typename T2 >
162template<
typename T1,
typename T2 >
176 :
public AddTraitEval2<T1,T2>
188struct AddTraitEval1<GroupTag<ID>,GroupTag<ID>,void>
192 using Type = GroupTag<ID>;
208 :
public AddTraitEval3<T1,T2>
235struct AddTraitEval3< 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 AddTrait< T1, T2 >::Type AddTrait_t
Auxiliary alias declaration for the AddTrait class template.
Definition: AddTrait.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 AddTrait class.
Definition: AddTrait.h:128
Header file for the Void type trait.