|
Boost : |
From: Aleksey Gurtovoy (alexy_at_[hidden])
Date: 2002-03-10 21:19:33
The header checks for _MSC_VER (in several places) in order to determine if
a trait class template specialization for '__int64' is needed/valid, e.g.
# if defined(BOOST_HAS_LONG_LONG)
template <> struct is_integral<unsigned long long>
{ BOOST_STATIC_CONSTANT(bool, value = true); };
template <> struct is_integral<long long>
{ BOOST_STATIC_CONSTANT(bool, value = true); };
#elif defined(__BORLANDC__) || defined(_MSC_VER) // <-- here
template <> struct is_integral<unsigned __int64>
{ BOOST_STATIC_CONSTANT(bool, value = true); };
template <> struct is_integral<__int64>
{ BOOST_STATIC_CONSTANT(bool, value = true); };
#endif
The check is troublesome because not all compilers that define _MSC_VER
provide intrinsic __int64 type, - in particular Comeau for Windows does not
(don't know about the Intel). So, the above condition should at least check
for BOOST_MSVC, and may be even for a particular version of it, as it's done
in "boost/cstdint.hpp".
Aleksey
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk