2011/5/2 alfC
Hi, Does Phoenix support conditional expression? I know if supports if_ *statements* but it seems that there's is no conditional (expression*. The question what is is the equivalent for
"(x>2.)?(1.):(-1.)"
in general. For example, I tryed with if_[].else_[] hoping that the statement is used as result but with no luck:
#include
#include<iostream> using namespace boost::phoenix; using namespace boost::phoenix::arg_names; int main(){ std::clog << (arg1*arg1)(2.) << std::endl; //returns correctly 4 std::clog << (if_(arg1>2.)[val(1.)].else_[val(-1.)])(2.) << std::endl; //syntax error return 0; } The syntax error points that the expression fails to evaluate as a number. Any ideas? -- Thanks, Alfredo
See: http://tinyurl.com/4xqsezx simply: std::clog << if_else(arg1>2., 1., -1.)(2.) << std::endl; HTH