I have and expression of type arg1*arg1 which is contained in a deduced type LambdaExp (more preciselly composite<multiplies_eval,vector<argument<0>, argument<0> >) when trying to see what is the phoenix-deduced return type when input is double typename LambdaExp::template result<basic_environment<double> >::type naturally, it gives 'double' (double*double) but when the input type is a boost::units::quantity typename LambdaExp::template result<basic_environment<quantity<si::length> > >::type it gives: error_cant_deduce_type (instread of the equivalent of quantity<si::area>, like in quantity<si::area> a = quantity<si::length>()*quantity<si::length>() ) this is strange since it seemed that Phoenix worked out of the box with Units. What is going on? How can we help Phoenix deduce the return type? Does Phoenix need this help, like Boost.Lambda does by means of boost/ units/lambda.hpp? Thank you, Alfredo