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 */ +