Boost logo

Boost :

From: Ed Brey (brey_at_[hidden])
Date: 2000-09-19 16:54:00


--- In boost_at_[hidden], John Maddock <John_Maddock_at_c...> wrote:
> However this isn't quite the end of the story, because you can't
use LL as
> a suffix to integral constants, but have to use i64 and ui64
instead. The
> C99 way around this is to use the INT64_C and UINT64_C macros to
append the
> correct suffix, it appears that the intent of C99 is to define
these only
> if _ _STDC_CONSTANT_MACROS is defined when compiling in C++ mode -
should
> we add these to stdint.h (suitably protected by #ifndef
> __STDC_CONSTANT_MACROS)?

Do we need the suffix at all? Why not just:
int64_t(1234567890123)

BTW, I think John's proposal for adding VC and Borland support is a
very good one.

BTW2, random.hpp uses the ULL suffix. Since its non-standard, I'd
prefer the constant be replaced with the uint64_t(123) style,
assuming that it's OK.

BTW3, random.hpp also uses the macro BOOST_STDINT_H_HAS_UINT64_T,
which isn't defined anywhere. It should be changed to use
BOOST_NO_INT64_T. Note, however, that this would cause VC to try to
compile rand48, which still doesn't work, because, for one reason,
the enum hack doesn't scale to 64-bits. Putting this all together,
random.hpp should really use the following guard

#if !defined(BOOST_NO_INT64_T) && !defined
(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)

around rand48. (Const_mod seems to be OK under VC.)


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk