http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55842



             Bug #: 55842

           Summary: C++11 ICE with boost multi-precision and boost variant

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: c++

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: ko...@xs4all.nl





Compiling the attached sample file leads to an internal compiler error.

The problem only occurs with GCC-4.7 from Debian Unstable 4.7.2-1 and the

upcoming 4.8 from Debian Experimental 4.8-20121218-1. Tested on an amd64

system.



I'm using a checkout of the latest boost release tree.



The command to reproduce the issue is:

gcc-4.8 -std=c++11 -c -I/src/boost/release test.cpp



This results in the following output:

In file included from /src/boost/release/boost/config.hpp:57:0,

                 from /src/boost/release/boost/variant/detail/config.hpp:16,

                 from /src/boost/release/boost/variant/variant.hpp:23,

                 from /src/boost/release/boost/variant.hpp:17,

                 from test.cpp:2:

/src/boost/release/boost/type_traits/has_nothrow_constructor.hpp: In

instantiation of 'const bool

boost::detail::has_nothrow_constructor_imp<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> > >::value':

/src/boost/release/boost/type_traits/has_nothrow_constructor.hpp:32:1:  

required from 'struct

boost::has_nothrow_constructor<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> > >'

/src/boost/release/boost/mpl/aux_/nested_type_wknd.hpp:26:31:   required from

'struct

boost::mpl::aux::nested_type_wknd<boost::has_nothrow_constructor<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> > > >'

/src/boost/release/boost/mpl/not.hpp:39:8:   required from 'struct

boost::mpl::not_<boost::has_nothrow_constructor<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> > > >'

/src/boost/release/boost/mpl/aux_/nested_type_wknd.hpp:26:31:   required from

'struct

boost::mpl::aux::nested_type_wknd<boost::mpl::apply1<boost::mpl::protect<boost::detail::variant::find_fallback_type_pred>,

boost::mpl::l_iter<boost::mpl::l_item<mpl_::long_<1l>,

boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> >, boost::mpl::l_end> > > >'

/src/boost/release/boost/mpl/aux_/preprocessed/gcc/and.hpp:23:8:   required

from 'struct boost::mpl::aux::and_impl<true,

boost::mpl::apply1<boost::mpl::protect<boost::detail::variant::find_fallback_type_pred>,

boost::mpl::l_iter<boost::mpl::l_item<mpl_::long_<1l>,

boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> >, boost::mpl::l_end> > >, mpl_::bool_<true>, mpl_::bool_<true>,

mpl_::bool_<true> >'

/src/boost/release/boost/mpl/aux_/preprocessed/gcc/and.hpp:48:8:   [ skipping 5

instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]

/src/boost/release/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp:101:135:

  required from 'struct

boost::mpl::aux::iter_fold_if_impl<boost::mpl::l_iter<boost::mpl::l_item<mpl_::long_<1l>,

boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> >, boost::mpl::l_end> >, mpl_::int_<0>,

boost::mpl::protect<boost::mpl::next<mpl_::na> >,

boost::mpl::protect<boost::mpl::aux::iter_fold_if_pred<boost::mpl::protect<boost::detail::variant::find_fallback_type_pred>,

boost::mpl::l_iter<boost::mpl::l_end> >, 0>, mpl_::na,

boost::mpl::always<mpl_::bool_<false> > >'

/src/boost/release/boost/mpl/iter_fold_if.hpp:81:12:   required from 'struct

boost::mpl::iter_fold_if<boost::mpl::l_item<mpl_::long_<1l>,

boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> >, boost::mpl::l_end>, mpl_::int_<0>,

boost::mpl::protect<boost::mpl::next<mpl_::na> >,

boost::mpl::protect<boost::detail::variant::find_fallback_type_pred>, mpl_::na,

mpl_::na>::result_'

/src/boost/release/boost/mpl/iter_fold_if.hpp:104:11:   required from 'struct

boost::mpl::iter_fold_if<boost::mpl::l_item<mpl_::long_<1l>,

boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> >, boost::mpl::l_end>, mpl_::int_<0>,

boost::mpl::protect<boost::mpl::next<mpl_::na> >,

boost::mpl::protect<boost::detail::variant::find_fallback_type_pred>, mpl_::na,

mpl_::na>'

/src/boost/release/boost/variant/variant.hpp:189:17:   required from 'struct

boost::detail::variant::find_fallback_type<boost::mpl::l_item<mpl_::long_<1l>,

boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> >, boost::mpl::l_end> >'

/src/boost/release/boost/variant/variant.hpp:1271:17:   required from 'class

boost::variant<boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<64u,

0u> > >'

test.cpp:10:27:   required from here

/src/boost/release/boost/type_traits/has_nothrow_constructor.hpp:24:32:

internal compiler error: in nothrow_spec_p, at cp/except.c:1265

    BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_CONSTRUCTOR(T));

                                ^

Please submit a full bug report,

with preprocessed source if appropriate.

See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.

Preprocessed source stored into /tmp/cc6oBMd0.out file, please attach this to

your bugreport.

Reply via email to