Boost logo

Boost :

Subject: Re: [boost] boost/cstdint.hpp definition of INTMAX_C conflicts with MPFR
From: John Maddock (john_at_[hidden])
Date: 2010-02-16 04:34:22


>Perhaps I wasn't clear enough: if the user wants to use intmax_t, he
>needs to make it available explicitly by including <stdint.h> before
>mpfr.h (see below). Then INTMAX_C gets defined (in C).

OK understood.

>I don't think there are much problems with the next C++ standard.
>We don't know very much about users who use MPFR with their C++
>programs, but I think that in practice, such users who want the
>stdint types always include <stdint.h> as documented in the MPFR
>manual, and in this case, intmax_t is available in the global
>namespace, according to <http://en.wikipedia.org/wiki/Stdint.h>.

No the problem with the next C++ std is *exactly* the same as with Boost:

#include <cstdint> // perhaps indirectly via some other #include or std lib
header.
#include <mpfr.h> // error: no ::intmax_t even though INTMAX_C is defined
(in practice may depend on the implementation - but this is what the std
says should happen).

Contrary to your expectations it is normal in C++ to include the C++ headers
such as <cstdint> and *not* the "legacy" C headers such as <stdint.h> to
avoid polluting the global namespace.

Sorry, but I think you're going to have to deal with this going forward
whatever Boost does,

HTH, John.


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