Boost logo

Boost :

From: John Maddock (john_at_[hidden])
Date: 2004-08-18 06:43:53


> In testing the serialization library it has come to my attention that at
> least the two compilers on 64 bit platforms use something like
>
> typedef long int int64_t;
> typedef long unsigned int uint64_t;
>
> This is causing me some problems.
>
> At the same time some compilers have
>
> typedef short int wchar_t;
>
> This would cause similar problems for me except for the fact that we have
>
> BOOST_NO_INTRINSIC_WCHAR_T
>
> So I can skip over them at the preprocessor level.
>
> Is there any reason we can't add to the config files?
>
> BOOST_NO_INTRINSIC_INT64
> BOOST_NO_INTRINSIC_UINT64

A bad choice of names, the 64-bit integer types definitely are intrinsic in
these cases, it's just that they're not the "long long" type (which is
actually permitted to have more than 64-bits).

One of the issues here is that these types may be defined by the platform
headers rather than by us - in fact as more compilers ship with their own
<stdint.h> this is more likely to be the case, so we don't really have any
way of knowing what the underlying type of int64_t is.

Normally, folks will either:

Specialise/overload for all built-in types (i.e. not int64_t).

or

use a specific width type (int64_t or whatever) as the sole
overload/specialisation.

Can this work for you?

John.


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