The upcoming C++0x standard has already ratified the Lambda Expression concept, which is also being touted as closures. Kinda.
I’m not keen on the syntax, at all. It’s ugly. Even Herb Sutter fumbles with it. The whole thing feels hacky and grumble-grumble-give-them-something that lets you do it.
The problem with a closure is that you want to have your cake and eat it. You want to be able to pass around a pointer to a piece of code to execute, but then you probably want it to be stateful and packaged with a bunch of data.
You can use a struct/class with an operator() functor to implement this, and that’s OK as long as what you are passing the object pointer to knows that’s what you are doing.
But that is not very often the case, especially if you have to go through an API. Infact, function pointers are generally a PITA of C++ programmers.