c++ defer 末尾自动执行 自动关闭
c++ defer 我认为是通过把对某个东西的关闭放到一个局部变量的析构函数中,从而实现自动关闭的效果。
#ifndef UTDEFER_H
#define UTDEFER_H
#include <iostream>
namespace icutil {
template<typename Function>
struct Deferer{
Function _f;
explicit Deferer(Function f) : _f(f) {}
~Deferer() {_f();}
};
template<typename Function>
Deferer<Function> deferFunc(Function f) {
return Deferer<Function>(f);
}
#define __DEFER_1__(x, y) x##y
#define __DEFER_2__(x, y) __DEFER_1__(x, y)
#define __DEFER_3__(x) __DEFER_2__(x, __COUNTER__)
#define utDefer(expr) auto __DEFER_3__(_defered_option_) = icutil::deferFunc([&](){expr;})
}
#endif /* UTDEFER_H */