Boost logo

Boost :

From: Markus Schöpflin (markus.schoepflin_at_[hidden])
Date: 2004-10-15 16:37:00


Robert Ramey wrote:

> LOL - I removed it yesterday. The cited file needs to know if int64 is an
> intrinsic type or a synonym for some other type - e.g. long on a 64 bit
> machine or ?. If it is, it will generate a compile error when the cited
> file is compiled. I would like to avoid this. For my purposes, if it were
> defined as a synonym for long long it would be ok so the above macros don't
> quite give me what I need in this instance. I'm still undecided what to do
> about this.
>
> I suppose the above proposal would work for me. I would use
>
> #if ! defined(BOOST_NO_INT64) && ! defined(BOOST_NO_INTRINSIC_INT64_T)
> virtual void load(int64_t & t) = 0;
> #endif

Suppose for the moment that we won't get any new config macros and stick
with the ones present. After reading John's mail, wouldn't the following
be ok for you?

template <typename T> foo();

#ifdef BOOST_HAS_LONG_LONG
template<> foo<long long>()
#else
# ifdef BOOST_HAS_MS_INT64
template<> foo<__int64>()
# endif
#endif

More can't be done with the current macros, as you have no way of
knowing if int64_t won't either collide with long long or __int64. Or
can it?

Markus


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