we have defer at home:

GLUE_(a, b) a##b
GLUE(a, b) GLUE_(a, b)

template<typename Closure>
struct DeferStruct {
Closure c;
DeferStruct(Closure &&c) : c(std::move(c)) {}
~DeferStruct() { c(); }
};

defer [[gnu::nodebug]] DeferStruct GLUE(_defer_stmt_, __COUNTER__)= [&]