//C++ defer(use RAII) like golang defer, but not support FILO and Only support one func
class defer final {
public:
template <typename Fun>
//fn must not throw
explicit defer(Fun &&fn) : fn_(std::forward<Fun>(fn)) {}
defer() = delete;
defer(const defer &) = delete;
defer &operator=(const defer &) = delete;
~defer() { if (fn_) fn_(); }
private:
std::function<void()> fn_;
};
C++, ScopeGuard or defer
最新推荐文章于 2022-04-22 17:50:16 发布