

Self-inlining anonymous closures in C++ - adg001
http://matt.might.net/articles/static-closures-in-c-plus-plus/

======
omnigoat
Sorry, I can't see how this is an improvement over Boost::Phoenix:

[http://www.boost.org/doc/libs/1_44_0/libs/spirit/phoenix/doc...](http://www.boost.org/doc/libs/1_44_0/libs/spirit/phoenix/doc/html/phoenix/introduction.html)

~~~
util
Thanks for the pointer!

~~~
jrockway
Now you get to run yourself in Valgrind to see if your guess about who's
supposed to free it is correct.

------
shin_lao
A lot of people will read this and think "damn C++ is such an ugly language,
it should never allow the programmer to do this!".

The reality is that that kind of technique allows to produce extremely fast
code because the compiler has got so much "certain" information at compile
time that it can optimize very aggressively.

It's more powerful than vanilla C macros because it works with the compiler,
not the pre-processor.

~~~
andymorris
C++ is the highest-level language that I can accurately guess the assembly
that will be actually run by the processor.

YMMV whether that's a blessing or a curse, though!

------
jongraehl
$ in C++ identifiers is a nonstandard extension that gcc allows on some
platforms - cool (and not portable).

~~~
gjm11
You could use, say, "ARG_" instead and it would work just the same. (Phoenix
uses "arg".)

