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