#pragma once #include // https://stackoverflow.com/a/61242721 template struct scope_exit { F func; explicit scope_exit(F&& f): func(std::forward(f)) {} ~scope_exit() { func(); } }; template scope_exit(F&& frv) -> scope_exit;