Boost logo

Boost Users :

Subject: [Boost-users] Compilation problem with fedora 22
From: Pierre Daye (pierre.daye_at_[hidden])
Date: 2015-09-10 08:08:34


Hello,

I recently installed Fedora 22 and I decided to use boost 1.59.0. I also
have a little server with Centos 7 on it. On both system, I installed boost
1.58.0. I also installed the Intel cluster studio XE 2016 on each machine.
I can compile (and run) with no problem my code on the Centos 7 but I can
not compile it under fedora 22. The relevant lines of code are:

void GABAB::compCumSum(double* out,double T_in,double dur)
> {
> double dt=0.01;
> int NStep=(int) floor(dur/dt);
>
> int tmpstartInd=startInd;
>
> startInd=0;
>
> StateVector x(2 * NState);
>
> controlled_runge_kutta< runge_kutta_cash_karp54 < StateVector, double,
> StateVector, double, vector_space_algebra, mkl_operations > >
> stepper_cumsum;
>
> compInitState(x, 0.0, 0.0);
>
> for (int ii = 0; ii < NState; ii++)
> x[ ii + NState ] = 0.0;
>
> for (int ii = 0; ii < NState; ii++)
> out[ii] = x[ii];
>
> setInput(T_in, T_in);
>
> cumsum_GABAB tmp(*this);
>
> size_t steps = integrate_adaptive( stepper_cumsum, tmp , x , 0.0 , dur ,
> dt );
>
> for (int ii = 0; ii < NState; ii++)
> out[ii] = x[ii + NState];
>
> startInd=tmpstartInd;
> }

StateVector is a typedef in another header file:

typedef boost::numeric::ublas::vector< double > StateVector;

If I comment the line starting with "integrate_adaptive(...", I can compile
the code. Otherwise, I got a tons of errors, starting with:

/usr/include/c++/5.1.1/functional(78): error: class
> "boost::numeric::odeint::controlled_runge_kutta<boost::numeric::odeint::runge_kutta_dopri5<StateVector,
> double, StateVector, double, boost::numeric::odeint::vector_space_algebra,
> boost::numeric::odeint::default_operations,
> boost::numeric::odeint::initially_resizer>,
> boost::numeric::odeint::default_error_checker<double,
> boost::numeric::odeint::vector_space_algebra,
> boost::numeric::odeint::default_operations>,
> boost::numeric::odeint::initially_resizer,
> boost::numeric::odeint::explicit_error_stepper_fsal_tag>" has no member
> "result_type"
> { typedef typename _Functor::result_type result_type; };

I emphasize the fact that the code can easily be compiled under Centos 7
with the same installation procedure of boost and the intel cluster xe
suite.

Any clue of what is happening?
Thanks,

Pierre

-- 
"It doesn't matter how beautiful your theory is, it doesn't matter how
smart you are. If it doesn't agree with experiment, it's wrong."
Richard P. Feynman


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net