35#ifndef _BLAZE_MATH_TYPETRAITS_UNDERLYINGNUMERIC_H_
36#define _BLAZE_MATH_TYPETRAITS_UNDERLYINGNUMERIC_H_
59template<
typename,
typename =
void >
struct UnderlyingNumericHelper1;
60template<
typename,
typename =
void >
struct UnderlyingNumericHelper2;
97 using Type =
typename UnderlyingNumericHelper1< RemoveCV_t<T> >::Type;
117template<
typename T >
127template<
typename T,
typename >
128struct UnderlyingNumericHelper1
130 using Type =
typename UnderlyingNumericHelper2<T>::Type;
133template<
typename T >
134struct UnderlyingNumericHelper1<
complex<T>, void >
139template<
typename T >
140struct UnderlyingNumericHelper1< T,
EnableIf_t< !
IsSame_v< T, typename T::ElementType > > >
142 using Type =
typename UnderlyingNumericHelper1< typename T::ElementType >::Type;
153template<
typename T,
typename >
154struct UnderlyingNumericHelper2
159template<
typename T >
160struct UnderlyingNumericHelper2< T,
EnableIf_t< !
IsSame_v< T, typename T::value_type > > >
162 using Type =
typename UnderlyingNumericHelper1< typename T::value_type >::Type;
Header file for the complex data type.
Header file for the EnableIf class template.
Header file for the IsSame and IsStrictlySame type traits.
Header file for the RemoveCV type trait.
Complex data type of the Blaze library.
typename UnderlyingNumeric< T >::Type UnderlyingNumeric_t
Auxiliary alias declaration for the UnderlyingNumeric type trait.
Definition: UnderlyingNumeric.h:118
constexpr bool IsSame_v
Auxiliary variable template for the IsSame type trait.
Definition: IsSame.h:159
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
Evaluation of the underlying scalar element type of a given data type.
Definition: UnderlyingNumeric.h:93