#pragma once #include namespace jvalidate::detail { class OnBlockExit { private: std::function callback_; public: OnBlockExit() = default; template OnBlockExit(F && callback) : callback_(callback) {} ~OnBlockExit() { if (callback_) { callback_(); } } }; }