16 #ifndef BOOST_INTEGER_TRAITS_HPP 17 #define BOOST_INTEGER_TRAITS_HPP 26 #if !defined(BOOST_NO_INTRINSIC_WCHAR_T) && (!defined(BOOST_NO_CWCHAR) || defined(sun) || defined(__sun) || defined(__QNX__)) 38 #if defined(__GNUC__) && (__GNUC__ >= 4) 39 #pragma GCC system_header 44 class integer_traits :
public std::numeric_limits<T>
51 template<
class T, T min_val, T max_val>
60 #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION 62 template<
class T, T min_val, T max_val>
65 template<
class T, T min_val, T max_val>
68 template<
class T, T min_val, T max_val>
76 :
public std::numeric_limits<bool>,
82 :
public std::numeric_limits<char>,
88 :
public std::numeric_limits<signed char>,
94 :
public std::numeric_limits<unsigned char>,
98 #ifndef BOOST_NO_INTRINSIC_WCHAR_T 101 :
public std::numeric_limits<wchar_t>,
104 #if defined(WCHAR_MIN) && defined(WCHAR_MAX) && !defined(__APPLE__) 106 #elif defined(__BORLANDC__) || defined(__CYGWIN__) || defined(__MINGW32__) || (defined(__BEOS__) && defined(__GNUC__)) 109 #elif (defined(__sgi) && (!defined(__SGI_STL_PORT) || __SGI_STL_PORT < 0x400))\ 110 || (defined __APPLE__)\ 111 || (defined(__OpenBSD__) && defined(__GNUC__))\ 112 || (defined(__NetBSD__) && defined(__GNUC__))\ 113 || (defined(__FreeBSD__) && defined(__GNUC__))\ 114 || (defined(__DragonFly__) && defined(__GNUC__))\ 115 || (defined(__hpux) && defined(__GNUC__) && (__GNUC__ == 3) && !defined(__SGI_STL_PORT)) 123 #error No WCHAR_MIN and WCHAR_MAX present, please adjust integer_traits<> for your compiler. 126 #endif // BOOST_NO_INTRINSIC_WCHAR_T 130 :
public std::numeric_limits<short>,
136 :
public std::numeric_limits<unsigned short>,
142 :
public std::numeric_limits<int>,
148 :
public std::numeric_limits<unsigned int>,
154 :
public std::numeric_limits<long>,
160 :
public std::numeric_limits<unsigned long>,
164 #if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) 165 #if defined(ULLONG_MAX) && defined(BOOST_HAS_LONG_LONG) 169 :
public std::numeric_limits< ::boost::long_long_type>,
175 :
public std::numeric_limits< ::boost::ulong_long_type>,
179 #elif defined(ULONG_LONG_MAX) && defined(BOOST_HAS_LONG_LONG) 185 :
public std::numeric_limits< ::boost::ulong_long_type>,
189 #elif defined(ULONGLONG_MAX) && defined(BOOST_HAS_LONG_LONG) 193 :
public std::numeric_limits< ::boost::long_long_type>,
199 :
public std::numeric_limits< ::boost::ulong_long_type>,
203 #elif defined(_LLONG_MAX) && defined(_C2) && defined(BOOST_HAS_LONG_LONG) 207 :
public std::numeric_limits< ::boost::long_long_type>,
213 :
public std::numeric_limits< ::boost::ulong_long_type>,
217 #elif defined(BOOST_HAS_LONG_LONG) 224 :
public std::numeric_limits< ::boost::long_long_type>,
225 public detail::integer_traits_base< ::boost::long_long_type, (1LL << (sizeof(::boost::long_long_type) * CHAR_BIT - 1)), ~(1LL << (sizeof(::boost::long_long_type) * CHAR_BIT - 1))>
229 class integer_traits< ::boost::ulong_long_type>
230 : public std::numeric_limits< ::boost::ulong_long_type>,
231 public detail::integer_traits_base< ::boost::ulong_long_type, 0, ~0uLL>
234 #elif defined(BOOST_HAS_MS_INT64)
237 class integer_traits< __int64>
238 : public std::numeric_limits< __int64>,
239 public detail::integer_traits_base< __int64, _I64_MIN, _I64_MAX>
243 class integer_traits< unsigned __int64>
244 : public std::numeric_limits< unsigned __int64>,
245 public detail::integer_traits_base< unsigned __int64, 0, _UI64_MAX>
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
BOOST_STATIC_CONSTANT(bool, is_integral=false)