
On 9/25/12 3:01 AM, Eric Niebler wrote:
While answering a question about Phoenix on stackoverflow[^1], I discovered that Phoenix lambda types are default-constructable, so long as all the terminals are also default constructable. That's handy when the terminals are stateless. Can it (the default-constructability) be relied on? It doesn't appear to be documented.
Phoenix-2 required that: http://tinyurl.com/c2y8q2z It seems to have been lost in Phoenix-3: http://tinyurl.com/92fxbze I think it should be reinstated.
C++11 lambdas have the nice property that stateless ones are implicitly convertible to raw function pointers. This can be implemented for Phoenix if we can rely on the default-constructability of Phoenix lambda types. In my stackoverflow answer I show how. It'd be pretty cool if this were a standard part of all Phoenix lambdas. Is there interest?
Incidentally, I think it's really, really cool that Phoenix allows this kind of extensibility. It's a very nice example of the benefits of the introspection capabilities built into Phoenix. Perhaps this could be worked into the docs somehow?
[^1]: http://stackoverflow.com/questions/10144948/static-functions-from-boost-lamb...
Most definitely! Regards, -- Joel de Guzman http://www.boostpro.com http://boost-spirit.com