#pragma once template struct scope_exit_callback { public: scope_exit_callback(callback_t&& callback) : callback(std::forward(callback)) {} ~scope_exit_callback() { this->callback(); } private: callback_t callback; };