diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp index 20678c5..6f65b90 100644 --- a/include/boost/cstdint.hpp +++ b/include/boost/cstdint.hpp @@ -35,7 +35,7 @@ // this is triggered with GCC, because it defines __cplusplus < 199707L # define BOOST_NO_INT64_T # endif -# elif defined(__FreeBSD__) +# elif defined(__FreeBSD__) || defined(__IBMCPP__) # include # else # include diff --git a/include/boost/integer_traits.hpp b/include/boost/integer_traits.hpp index 569eb01..402060f 100644 --- a/include/boost/integer_traits.hpp +++ b/include/boost/integer_traits.hpp @@ -147,42 +147,64 @@ class integer_traits public detail::integer_traits_base { }; -#if defined(ULLONG_MAX) && !defined(__SUNPRO_CC) +#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) +#if defined(ULLONG_MAX) && defined(BOOST_HAS_LONG_LONG) + template<> class integer_traits : public std::numeric_limits, public detail::integer_traits_base { }; + template<> class integer_traits : public std::numeric_limits, public detail::integer_traits_base { }; -#elif defined(ULONG_LONG_MAX) + +#elif defined(ULONG_LONG_MAX) && defined(BOOST_HAS_LONG_LONG) + template<> -class integer_traits - : public std::numeric_limits, - public detail::integer_traits_base -{ }; +class integer_traits : public std::numeric_limits, public detail::integer_traits_base{ }; template<> class integer_traits : public std::numeric_limits, public detail::integer_traits_base { }; -#elif defined(ULONGLONG_MAX) && !defined(BOOST_MSVC) && !defined(__BORLANDC__) + +#elif defined(ULONGLONG_MAX) && defined(BOOST_HAS_LONG_LONG) + template<> class integer_traits : public std::numeric_limits, public detail::integer_traits_base { }; + template<> class integer_traits : public std::numeric_limits, public detail::integer_traits_base { }; + +#elif defined(_LLONG_MAX) && defined(_C2) && defined(BOOST_HAS_LONG_LONG) + +template<> +class integer_traits + : public std::numeric_limits, + public detail::integer_traits_base +{ }; + +template<> +class integer_traits + : public std::numeric_limits, + public detail::integer_traits_base +{ }; + +#endif #endif } // namespace boost #endif /* BOOST_INTEGER_TRAITS_HPP */ +