#include <iostream>
#include <functional>
template <typename T>
class defer {
private:
std::function<T()> mFunctor;
public:
defer(std::function<T()> functor) : mFunctor(functor) {}
~defer() { mFunctor(); }
};
int main() {
defer<void> d([] { std::cout << "Deferred func!" << std::endl; });
//...
std::cout << "Hello, world!" << std::endl;
if (true) {
return 0;
}
//...
if (false){
return 1;
}
return 0;
}