2011/5/2 alfC <alfredo.correa@gmail.com>
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<boost/phoenix/phoenix.hpp>
#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