id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 8187,Bug in phoenix docs and example code,Eric Niebler,Kohei Takahashi,"The example [http://www.boost.org/libs/phoenix/doc/html/phoenix/examples/transforming_the_expression_tree.html here] is leading people astray. It is not recursively applying the transformation for node types other than plus, minus, multiplies and divides. If the top-most node is not one of those, no transformation happens. The default case shown is: {{{ struct invert_actions { template struct when : proto::_ // the default is proto::_ {}; }; }}} I think it should be: {{{ struct invert_actions { template struct when : proto::nary_expr< proto::_, proto::vararg< proto::when > > {}; }; }}} I'm actually not quite sure how this works, but it seems to. Note that the problem would also need to be fixed [http://www.boost.org/libs/phoenix/example/invert.cpp here]. See [http://stackoverflow.com/questions/15077637/transforming-a-boost-c-phoenix-expression-tree] for a discussion. ",Bugs,closed,Boost 1.67.0,phoenix,Boost 1.52.0,Cosmetic,fixed,,