Boost logo

Boost :

Subject: Re: [boost] [mpl] int_<INT_MIN> fails to compile under gcc 4.6
From: Philipp Reh (sefi_at_[hidden])
Date: 2011-03-06 05:50:16


Stirling Westrup wrote:

> I'm not actually sure if this is a gcc regression, or a bug in mpl,
> but the following code, which compiles under gcc 4.5, doesn't do so
> under gcc 4.6:
>
> #include <climits>
> #include <boost/mpl/int.hpp>
> typedef boost::mpl::int_<INT_MIN> Foo;
> Foo f;
>
>
> It produces the errors:
>
> /usr/local/include/boost/mpl/aux_/integral_wrapper.hpp: In
> instantiation of ‘mpl_::int_<-0x00000000080000000>’:
> test_test.cpp:8:27: instantiated from here
> /usr/local/include/boost/mpl/aux_/integral_wrapper.hpp:73:96: error:
> ‘2147483647’ is not a valid template argument for type ‘int’ because
> it is a non-constant expression
> /usr/local/include/boost/mpl/aux_/integral_wrapper.hpp:73:96: error:
> overflow in constant expression [-fpermissive]
>
>
> I've already created a trak ticket for this (#5268), but was wondering
> if anyone had any insights as to its cause and/or any workarounds. My
> guess is that its related to gcc rewriting parts of its constant
> folding code to support constexpr.
>
>
>
>
>

I can confirm that. INT_MIN isn't the only problem, it fails for a lot of
other values as well.
Can you please raise this issue on the gcc bugtracker because the release is
very close.

Cheers,
Philipp


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