
At Wed, 13 Apr 2011 16:10:12 +0100, Robert Jones wrote:
I'm a newbie to Phoenix, just exploring, but I guess my intent in this code is obvious. Can anyone tell me what I'm doing wrong?
Thx
- Rob.
#include <iostream> #include
#include #include #include using namespace boost::phoenix; using namespace boost::phoenix::arg_names; using namespace std;
int main() { boost::function
factorial; factorial = if_else( _1 == 0, 1, _1 * factorial( _1 - 1 ) );
I think you'd better find a way to store factorial by reference in the phoenix expression, because the value at the time of building is empty. Totally guessing: factorial = if_else( _1 == 0, 1, _1 * ref(factorial)( _1 - 1 ) ); -- Dave Abrahams BoostPro Computing http://www.boostpro.com