跳转至

2. 作用域防护

使用下述功能需要包含头文件coke/tools/scope.h

coke::ScopeExit

coke::ScopeExit提供一种简单但通用功能,它将在退出作用域时执行用户指定的函数,也可通过调用其release成员函数放弃执行。

template<typename F>
    requires (std::is_nothrow_invocable_r_v<void, F>
              && std::is_nothrow_move_constructible_v<F>)
class ScopeExit;

成员函数

  • 构造函数/析构函数

    只可通过指定函数或函数对象的方式构造。

    explicit ScopeExit(F f);
    ScopeExit(const ScopeExit &) = delete;
    ~ScopeExit();
    
  • 放弃执行

    在析构时不再执行构造时指定的函数。

    void release() noexcept;
    

示例

参考example/ex021-scope_guard.cpp