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).
>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
#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,
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk