Simulating finally block in C++0x
问题 Inspired from the other topic, I wrote this code which simulates a finally block: #include <cassert> #include <iostream> struct base { virtual ~base(){} }; template<typename TLambda> struct exec : base { TLambda lambda; exec(TLambda l) : lambda(l){} ~exec() { lambda(); } }; class lambda{ base *pbase; public: template<typename TLambda> lambda(TLambda l): pbase(new exec<TLambda>(l)){} ~lambda() { delete pbase; } }; class A{ int a; public: void start(){ int a=1; lambda finally = [&]{a=2; std: