12 #ifndef ECL_TYPE_TRAITS_FUNDAMENTAL_TYPES_HPP_
13 #define ECL_TYPE_TRAITS_FUNDAMENTAL_TYPES_HPP_
21 #include <ecl/config/ecl.hpp>
41 class is_integral :
public False {};
50 class is_integral<char> :
public True {};
58 class is_integral<unsigned char> :
public True {};
66 class is_integral<short> :
public True {};
74 class is_integral<unsigned short> :
public True {};
82 class is_integral<int> :
public True {};
90 class is_integral<unsigned int> :
public True {};
98 class is_integral<long> :
public True {};
106 class is_integral<unsigned long> :
public True {};
114 class is_integral<long long> :
public True {};
122 class is_integral<unsigned long long> :
public True {};
135 template <
typename T>
136 class is_unsigned :
public False {};
179 template <
typename T>
225 template <
typename T>
242 class is_float<double> :
public True {};
250 class is_float<long double> :
public True {};
264 template <
typename T>
265 class is_signed_byte :
public False {};
273 class is_signed_byte<signed char> :
public True {};
283 class is_signed_byte<char> :
public Bool<std::numeric_limits<char>::is_signed> {};
293 template <
typename T>
294 class is_unsigned_byte :
public False {};
302 class is_unsigned_byte<unsigned char> :
public True {};
312 class is_unsigned_byte<char> :
public Bool<!std::numeric_limits<char>::is_signed> {};
322 template <
typename T>
323 class is_byte :
public False {};
331 class is_byte<signed char> :
public True {};
339 class is_byte<char> :
public True {};
347 class is_byte<unsigned char> :
public True {};