bertiniteam / b2

Bertini 2.0: The redevelopment of Bertini in C++.
92 stars 34 forks source link

compiling with boost 1.58 fails #69

Closed ofloveandhate closed 7 years ago

ofloveandhate commented 7 years ago

compiling ubuntu 16.04, gcc 5 produces this error:

libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I./include/bertini2 -I./include -pthread -I/usr/include -I/usr/local/include/eigen3 -g -O2 -std=gnu++14 -MT src/system/start_system.lo -MD -MP -MF src/system/.deps/start_system.Tpo -c src/system/start_system.cpp  -fPIC -DPIC -o src/system/.libs/start_system.o
In file included from /usr/local/include/eigen3/Eigen/Core:351:0,
                 from ./include/bertini2/eigen_extensions.hpp:42,
                 from ./include/bertini2/system.hpp:48,
                 from ./include/bertini2/start_system.hpp:35,
                 from src/system/start_system.cpp:25:
/usr/local/include/eigen3/Eigen/src/Core/NumTraits.h: In instantiation of ‘static int Eigen::internal::default_digits10_impl<T, false, false>::run() [with T = boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0u, (boost::multiprecision::mpfr_allocation_type)1u> >]’:
/usr/local/include/eigen3/Eigen/src/Core/NumTraits.h:118:51:   required from ‘static int Eigen::GenericNumTraits<T>::digits10() [with T = boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0u, (boost::multiprecision::mpfr_allocation_type)1u> >]’
/usr/local/include/eigen3/Eigen/src/Core/IO.h:122:39:   required from ‘static int Eigen::internal::significant_decimals_impl<Scalar>::run() [with Scalar = bertini::complex]’
/usr/local/include/eigen3/Eigen/src/Core/IO.h:155:66:   required from ‘std::ostream& Eigen::internal::print_matrix(std::ostream&, const Derived&, const Eigen::IOFormat&) [with Derived = Eigen::Matrix<bertini::complex, -1, 1, 0, -1, 1>; std::ostream = std::basic_ostream<char>]’
/usr/local/include/eigen3/Eigen/src/Core/IO.h:220:32:   required from ‘std::ostream& Eigen::operator<<(std::ostream&, const Eigen::DenseBase<Derived>&) [with Derived = Eigen::Matrix<bertini::complex, -1, 1, 0, -1, 1>; std::ostream = std::basic_ostream<char>]’
./include/bertini2/patch.hpp:451:12:   required from here
/usr/local/include/eigen3/Eigen/src/Core/NumTraits.h:34:56: error: invalid cast from type ‘boost::enable_if_c<true, boost::multiprecision::detail::expression<boost::multiprecision::detail::function, boost::multiprecision::detail::ceil_funct<boost::multiprecision::backends::mpfr_float_backend<0u, (boost::multiprecision::mpfr_allocation_type)1u> >, boost::multiprecision::detail::expression<boost::multiprecision::detail::negate, boost::multiprecision::detail::expression<boost::multiprecision::detail::function, boost::multiprecision::detail::log10_funct<boost::multiprecision::backends::mpfr_float_backend<0u, (boost::multiprecision::mpfr_allocation_type)1u> >, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0u, (boost::multiprecision::mpfr_allocation_type)1u> >, void, void>, void, void, void>, void, void> >::type {aka boost::multiprecision::detail::expression<boost::multiprecision::detail::function, boost::multiprecision::detail::ceil_funct<boost::multiprecision::backends::mpfr_float_backend<0u, (boost::multiprecision::mpfr_allocation_type)1u> >, boost::multiprecision::detail::expression<boost::multiprecision::detail::negate, boost::multiprecision::detail::expression<boost::multiprecision::detail::function, boost::multiprecision::detail::log10_funct<boost::multiprecision::backends::mpfr_float_backend<0u, (boost::multiprecision::mpfr_allocation_type)1u> >, boost::multiprecision::number<boost::multiprecision::backends::mpfr_float_backend<0u, (boost::multiprecision::mpfr_allocation_type)1u> >, void, void>, void, void, void>, void, void>}’ to type ‘int’
     return int(ceil(-log10(NumTraits<Real>::epsilon())));
                                                        ^
Makefile:1519: recipe for target 'src/system/start_system.lo' failed

this is caused by leaving expression templates on in an unpatched version of boost prior to 1.61

ofloveandhate commented 7 years ago

the solution is to re-configure the core, explicitly disabling expression templates:

./configure --disable-expression_templates