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 <>.

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
#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, gregod at, cpdaniel at, john at