36 #ifndef EASTL_INTERNAL_TYPE_FUNDAMENTAL_H 37 #define EASTL_INTERNAL_TYPE_FUNDAMENTAL_H 54 template <
typename T>
struct is_void :
public false_type{};
56 template <>
struct is_void<void> :
public true_type{};
57 template <>
struct is_void<void const> :
public true_type{};
58 template <>
struct is_void<void volatile> :
public true_type{};
59 template <>
struct is_void<void const volatile> :
public true_type{};
81 template <
typename T>
struct is_integral :
public false_type{};
84 template <>
struct is_integral<unsigned char> :
public true_type{};
85 template <>
struct is_integral<const unsigned char> :
public true_type{};
86 template <>
struct is_integral<unsigned short> :
public true_type{};
87 template <>
struct is_integral<const unsigned short> :
public true_type{};
88 template <>
struct is_integral<unsigned int> :
public true_type{};
89 template <>
struct is_integral<const unsigned int> :
public true_type{};
90 template <>
struct is_integral<unsigned long> :
public true_type{};
91 template <>
struct is_integral<const unsigned long> :
public true_type{};
92 template <>
struct is_integral<unsigned long long> :
public true_type{};
93 template <>
struct is_integral<const unsigned long long> :
public true_type{};
95 template <>
struct is_integral<signed char> :
public true_type{};
96 template <>
struct is_integral<const signed char> :
public true_type{};
97 template <>
struct is_integral<signed short> :
public true_type{};
98 template <>
struct is_integral<const signed short> :
public true_type{};
99 template <>
struct is_integral<signed int> :
public true_type{};
100 template <>
struct is_integral<const signed int> :
public true_type{};
101 template <>
struct is_integral<signed long> :
public true_type{};
102 template <>
struct is_integral<const signed long> :
public true_type{};
103 template <>
struct is_integral<signed long long> :
public true_type{};
104 template <>
struct is_integral<const signed long long> :
public true_type{};
106 template <>
struct is_integral<bool> :
public true_type{};
107 template <>
struct is_integral<const bool> :
public true_type{};
108 template <>
struct is_integral<char> :
public true_type{};
109 template <>
struct is_integral<const char> :
public true_type{};
110 #ifndef EA_WCHAR_T_NON_NATIVE // If wchar_t is a native type instead of simply a define to an existing type... 111 template <>
struct is_integral<wchar_t> :
public true_type{};
112 template <>
struct is_integral<const wchar_t> :
public true_type{};
124 template <
typename T>
struct is_floating_point :
public false_type{};
127 template <>
struct is_floating_point<float> :
public true_type{};
128 template <>
struct is_floating_point<const float> :
public true_type{};
129 template <>
struct is_floating_point<double> :
public true_type{};
130 template <>
struct is_floating_point<const double> :
public true_type{};
131 template <>
struct is_floating_point<long double> :
public true_type{};
132 template <>
struct is_floating_point<const long double> :
public true_type{};
144 template <
typename T>
145 struct is_arithmetic :
public integral_constant<bool,
146 is_integral<T>::value || is_floating_point<T>::value
158 template <
typename T>
159 struct is_fundamental :
public integral_constant<bool,
160 is_void<T>::value || is_integral<T>::value || is_floating_point<T>::value
166 #endif // Header include guard EA Standard Template Library.