#pragma once #include namespace torch { namespace jit { class ResourceGuard { std::function _destructor; bool _released; public: ResourceGuard(std::function destructor) : _destructor(std::move(destructor)), _released(false) {} ~ResourceGuard() { if (!_released) _destructor(); } void release() { _released = true; } }; } // namespace jit } // namespace torch