17 lines
404 B
C
17 lines
404 B
C
|
#pragma once
|
||
|
|
||
|
// from: https://www.gingerbill.org/article/2015/08/19/defer-in-cpp/
|
||
|
|
||
|
#include <functional>
|
||
|
|
||
|
struct privDefer {
|
||
|
std::function<void()> f;
|
||
|
privDefer(std::function<void()> f) : f(f) {}
|
||
|
~privDefer() { f(); }
|
||
|
};
|
||
|
|
||
|
#define DEFER_1(x, y) x##y
|
||
|
#define DEFER_2(x, y) DEFER_1(x, y)
|
||
|
#define DEFER_3(x) DEFER_2(x, __COUNTER__)
|
||
|
#define defer(code) auto DEFER_3(_defer_) = privDefer([&](){code;})
|