|
Boost Users : |
Subject: Re: [Boost-users] [phoenix][lambda] lambda to phoenix translation: get sig (signature) from actor
From: alfC (alfredo.correa_at_[hidden])
Date: 2010-05-29 21:48:53
> I'm not sure if it's a good idea to go beyond the documented features.
> The more you do this, the more work you'll have to do in porting it
> to Phoenix-3. What is it you are trying to do?
thank you for the advise.
What I am trying to do mixes boost.units with lambda/phoenix
expressions
I had a function that worked well with lambda and I am trying to make
it work with phoenix.
In a previous post I asked how to translate the argument, which is
done, of the following function (called qawc) and
now I am trying to translate the result type.
template<class LambdaExp, class UnitIntegrandDomain>
typename multiply_typeof_helper< \
typename divide_typeof_helper< \
quantity<typename LambdaExp::template
sig<tuple<quantity<UnitIntegrandDomain> > >::type::unit_type>, \
quantity<UnitIntegrandDomain> \
>::type, \
quantity<UnitIntegrandDomain> \
>::type
qawc(
lambda_functor<lambda_functor_base<
arithmetic_action<divide_action>,
tuple<
lambda_functor<//
LambdaExp
>,//
lambda_functor<lambda_functor_base<
arithmetic_action<minus_action>,
tuple<
lambda_functor<
placeholder<1>
>,
quantity<UnitIntegrandDomain> const
>
> >
>
> > f_expr,
boost::numeric::interval<quantity<UnitIntegrandDomain> > const& iv
){
typedef RET_TYPE ret_type;
double const c = get<1>(get<1>(f_expr.args).args).value();
double ret = gsl::integration::qawc(
bind(
&LambdaExp::template sig<tuple<quantity<UnitIntegrandDomain> >
>::type::value,
get<0>(f_expr.args)
(bind(&quantity<UnitIntegrandDomain>::from_value, _1))
),
boost::numeric::interval<double>( lower(iv).value() ,
upper(iv).value() ),
c
);
return ret_type::from_value(ret);
}
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