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