|
Boost : |
From: Aleksey Gurtovoy (alexy_at_[hidden])
Date: 2000-01-31 04:17:07
I've came across a small problem - the following lines in the latest
version of 'type_traits.hpp' produce
"struct/union/enum/class tag 'is_extension_unsigned_integral' redifined"
error message under Metrowerks CodeWarrior 5.0:
// type_traits.hpp, lines 236-247:
#ifdef ULLONG_MAX
template <> struct is_extension_unsigned_integral<unsigned long long>
{ static const bool value = true; };
template <> struct is_extension_signed_integral<long long>
{ static const bool value = true; };
#endif
#if defined(__BORLANDC__) || defined(_MSC_VER)
template <> struct is_extension_unsigned_integral<unsigned __int64>
{ static const bool value = true; };
template <> struct is_extension_signed_integral<__int64>
{ static const bool value = true; };
#endif
As far as I understand, the reason is very simple - both
'ULLONG_MAX' and '_MSC_VER' macros are defined and '__int64'
is a synonym (probably just a typedef) for 'long long', so we indeed
have a redefinition here.
I suggest to change the second '#ifdef' on this one
#if defined(__BORLANDC__) ||
( defined(_MSC_VER) && !defined(__MWERKS__) )
-Alexy
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk