fork(1) download
  1. #include <iostream>
  2.  
  3. template<typename functor>
  4. struct finalizer
  5. {
  6. finalizer(functor f) : f_(f) {}
  7. ~finalizer() {
  8. f_();
  9. }
  10.  
  11. functor f_;
  12. };
  13.  
  14. template<typename functor>
  15. finalizer<functor> finally(functor&& f)
  16. {
  17. return finalizer<functor>(f);
  18. }
  19.  
  20. int main()
  21. {
  22. int a = 0;
  23. {
  24. auto scope_exit = finally([&](){
  25. a++;
  26. });
  27. std::cout << a << std::endl;
  28. }
  29. std::cout << a << std::endl;
  30. }
Success #stdin #stdout 0s 2884KB
stdin
Standard input is empty
stdout
0
1