12 #ifndef ECL_TYPE_TRAITS_FUNDAMENTAL_TYPES_HPP_ 13 #define ECL_TYPE_TRAITS_FUNDAMENTAL_TYPES_HPP_ 20 #include <ecl/mpl/bool.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 {};
142 class is_unsigned<unsigned char> :
public True {};
148 class is_unsigned<unsigned short> :
public True {};
154 class is_unsigned<unsigned int> :
public True {};
160 class is_unsigned<unsigned long> :
public True {};
166 class is_unsigned<unsigned long long> :
public True {};
179 template <
typename T>
180 class is_signed :
public False {};
186 class is_signed<char> :
public True {};
192 class is_signed<short> :
public True {};
198 class is_signed<int> :
public True {};
204 class is_signed<long> :
public True {};
210 class is_signed<long long> :
public True {};
225 template <
typename T>
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 {};
internal::ParamGenerator< bool > Bool()