13 lines
303 B
C++
13 lines
303 B
C++
#include <functional>
|
|
#include <stack>
|
|
class Defer {
|
|
std::stack<std::function<void()>> stk;
|
|
|
|
public:
|
|
~Defer() {
|
|
while (!stk.empty()) stk.top()(), stk.pop();
|
|
}
|
|
Defer() = default;
|
|
Defer(std::function<void()> f) { stk.push(f); }
|
|
void operator()(std::function<void()> f) { stk.push(f); }
|
|
}; |