|
🛰️航天仿真算法库 SpaceAST 0.3.1
|
#include <ScopeExit.hpp>
Public 成员函数 | |
| ScopeExit (const F &fn) | |
| ScopeExit (F &&fn) | |
| ScopeExit (ScopeExit &&other) noexcept(std::is_nothrow_move_constructible< F >::value) | |
| ~ScopeExit () | |
| A_DISABLE_COPY (ScopeExit) | |
| void | invoke () |
| void | release () noexcept |
| bool | isActive () const noexcept |
| operator bool () const noexcept | |
Protected 属性 | |
| F | fn_ |
| bool | active_ {true} |
作用域退出守卫
持有一个无参可调用对象,在守卫析构时执行一次,从而保证提前返回、 跳出循环或抛出异常时清理动作都能完成——等价于其它语言的 defer 语句。 动作只执行一次:移动或 release() 之后原守卫不再执行。
| F | 无参可调用对象类型,如 lambda、函数对象、函数指针、std::function<void()> 等 |
|
inline |
立即执行清理动作并解除守卫
先解除再执行,因此即使动作抛出异常也不会被重复执行。