
On 5/29/2010 11:29 AM, alfC wrote:
Hi I have a phoenix expression of type
actor< composite< divides_eval, vector< LambdaExp, composite< minus_eval, vector< argument<0>, value<double> > > >
f_expr
with boost.lambda I could extract the different components (Lambda and the actual value stored by value<double>) from f_expr as: get<0>(f_expr.args) //for lambda and get<1>(get<1>(f_expr.args).args) //for lambda
what is the equivalent for Boost.phoenix?, it seems that the phoenix actor doesn't have the member "args". something like at_c<1>(at_c<1>(f_expr)) seems to be in the right direction but it returns something of type value<double> from which I don't know how to extract the value in the same way at_c<1>(f_expr) returns the denominator, but it is not an actor, so it is not a lambda expression.
the corresponding lambda type was: lambda_functor
, tuple< lambda_functor/ LambdaExp >,// lambda_functor , tuple< lambda_functor< placeholder<1> >, double const //<-- attention adds const to avoid unreadable errors > > > > f_expr
Check out the extension mechanism (somewhere near the end) where this is documented. See composites. Essentially, while lambda uses tuples, phoenix uses fusion containers -- more or less the same, but with more horsepower (i.e. algorithms and iterators). Regards, -- Joel de Guzman http://www.boostpro.com http://spirit.sf.net http://www.facebook.com/djowel Meet me at BoostCon http://www.boostcon.com/home http://www.facebook.com/boostcon