
On 09/24/2012 09:01 PM, 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.
That's one of the advantages of taking holding children by value. It also means Phoenix expressions could be serializable.
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?
That probably requires that the function object be monomorphic too.