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