#pragma once #include template class Defer final { public: Defer(FnT fn) : mFunction([&fn] { (void)fn(); }) { } ~Defer() { if (mFunction) { mFunction(); } } private: std::function mFunction; };