35#ifndef _BLAZE_MATH_TYPETRAITS_UNDERLYINGBUILTIN_H_
36#define _BLAZE_MATH_TYPETRAITS_UNDERLYINGBUILTIN_H_
58template<
typename,
typename =
void >
struct UnderlyingBuiltinHelper1;
59template<
typename,
typename =
void >
struct UnderlyingBuiltinHelper2;
96 using Type =
typename UnderlyingBuiltinHelper1< RemoveCV_t<T> >::Type;
116template<
typename T >
126template<
typename T,
typename >
127struct UnderlyingBuiltinHelper1
129 using Type =
typename UnderlyingBuiltinHelper2<T>::Type;
132template<
typename T >
133struct UnderlyingBuiltinHelper1< T,
EnableIf_t< !
IsSame_v< T, typename T::ElementType > > >
135 using Type =
typename UnderlyingBuiltinHelper1< typename T::ElementType >::Type;
146template<
typename T,
typename >
147struct UnderlyingBuiltinHelper2
152template<
typename T >
153struct UnderlyingBuiltinHelper2< T,
EnableIf_t< !
IsSame_v< T, typename T::value_type > > >
155 using Type =
typename UnderlyingBuiltinHelper1< typename T::value_type >::Type;
Header file for the EnableIf class template.
Header file for the IsSame and IsStrictlySame type traits.
Header file for the RemoveCV type trait.
typename UnderlyingBuiltin< T >::Type UnderlyingBuiltin_t
Auxiliary alias declaration for the UnderlyingBuiltin type trait.
Definition: UnderlyingBuiltin.h:117
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 builtin element type of a given data type.
Definition: UnderlyingBuiltin.h:92