#pragma once #include namespace AK { template class ScopeGuard { public: ScopeGuard(Callback callback) : m_callback(move(callback)) { } ~ScopeGuard() { m_callback(); } private: Callback m_callback; }; } using AK::ScopeGuard;