#ifndef UTILS_H #define UTILS_H #include template class Defer { Callable m_func; public: explicit Defer(Callable&& func) : m_func(std::forward(func)) {} Defer() = delete; Defer(const Defer&) = delete; ~Defer() { m_func(); } }; #endif // UTILS_H