intrinsice 64 bit integers

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 Robert Ramey

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.
participants (2)
-
John Maddock
-
Robert Ramey