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 */

文章目录