
On Mar 28, 2011, at 2:08 AM, Thomas Heller wrote:
That's what came to my mind too - it's statement syntax versus expression syntax, right? Phoenix has pseudo-statements but they're still in expression syntax.
Yes. This is a bit confusing: Everything in Phoenix (or BLL) is a C++ Expression (having a return type etc., can be void). Phoenix has a statement module, which emulates C++ statements. As a C++ Expression they have a return type of void. We compose these expressions using expression templates (woohoo!), which we traverse upon evaluation.
Sure, I get that. I was suggesting that the most neutral way to describe that row might be Syntax? Statement / Expression
Phoenix also has something similar to Boost.Local. Not really local functions but you can adapt (almost) any function object (with everything written with C++ statements) to be phoenix statements.
It's great that all these techniques work together so well.
So i might even claim that you can write phoenix functions "using usual C++ syntax".
While that's really cool, I think it's confusing matters to say that, at least in this context. It's a function that's been adapted for use with phoenix, it's not what anyone would think of when talking about the phoenix syntax. Gordon