
Ok, ppl may look at : https://www.lri.fr/svn/parall/prog_gen/branches/phoenix3/ login/passwd : boost/boost to get a look at how I see the internals of the new phoenix working. The code is just a proto transform that evaluate any kind of expression and values from a fusion vector in a recursive, customizable way. Basically, it needs to be wrapped into a proper proto grammar+ expression to hide that. Now, if you wanted to add for exampel a if_[] statement and have it evaluated properly you can overload either the evaluate PFO or specialize process_node. If you need to do otherthign with the expression, build a new evlauator like PFO and build another compile<T> instance (like coutning arity, turn the expression into a std::string, etc). You will notice that both the process_node and evaluator are proto agnostic. I'll advice using make_expr over const object to reduce compile-time (as stated in a old post of mine) and maybe use CRTP so we can imbue placeholder with proper method generating expression.