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 usr/include/boost/proto/operators.hpp:79:9: error: forming reference to void if.cpp:8:43: error: no match for ‘operator<<’ in ‘std::clog << boost::phoenix::if_ [with Cond = boost::phoenix::actor<boost::proto::exprns_::basic_expr<boost::proto::tag::greater, boost::proto::argsns_::list2<boost::phoenix::actor<boost ... etc, etc, 100 lines