NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
scope_fail< Func > 模板类 参考

作用域失败守卫 更多...

#include <scope.hpp>

Public 成员函数

template<typename F, enable_if_t<!is_same_v< remove_cvref_t< F >, scope_fail > &&is_constructible_v< Func, F > &&!is_nothrow_constructible_v< Func, F >, int > = 0>
 scope_fail (F &&func)
 构造函数(异常不安全)
template<typename F, enable_if_t<!is_same_v< remove_cvref_t< F >, scope_fail > &&is_constructible_v< Func, F > &&is_nothrow_constructible_v< Func, F >, int > = 0>
 scope_fail (F &&func) noexcept
 构造函数(异常安全)
 scope_fail (scope_fail &&rhs) noexcept
 移动构造函数
 ~scope_fail () noexcept
 析构函数
void release () noexcept
 释放守卫

详细描述

template<typename Func>
class scope_fail< Func >

作用域失败守卫

模板参数
Func可调用对象类型

仅在作用域因异常退出时执行指定的函数。 用于实现事务回滚等异常安全机制。

在文件 scope.hpp130 行定义.

构造及析构函数说明

◆ scope_fail() [1/3]

template<typename Func>
template<typename F, enable_if_t<!is_same_v< remove_cvref_t< F >, scope_fail > &&is_constructible_v< Func, F > &&!is_nothrow_constructible_v< Func, F >, int > = 0>
scope_fail< Func >::scope_fail ( F && func)
inlineexplicit

构造函数(异常不安全)

模板参数
F函数对象类型
参数
func要执行的函数对象

记录当前未捕获异常数量,用于析构时判断是否因异常退出。

在文件 scope.hpp145 行定义.

引用了 forward() , 以及 uncaught_exceptions().

被这些函数引用 scope_fail().

◆ scope_fail() [2/3]

template<typename Func>
template<typename F, enable_if_t<!is_same_v< remove_cvref_t< F >, scope_fail > &&is_constructible_v< Func, F > &&is_nothrow_constructible_v< Func, F >, int > = 0>
scope_fail< Func >::scope_fail ( F && func)
inlineexplicitnoexcept

构造函数(异常安全)

模板参数
F函数对象类型
参数
func要执行的函数对象

在文件 scope.hpp159 行定义.

◆ scope_fail() [3/3]

template<typename Func>
scope_fail< Func >::scope_fail ( scope_fail< Func > && rhs)
inlinenoexcept

移动构造函数

参数
rhs要移动的守卫对象

在文件 scope.hpp169 行定义.

引用了 scope_fail().

◆ ~scope_fail()

template<typename Func>
scope_fail< Func >::~scope_fail ( )
inlinenoexcept

析构函数

如果当前未捕获异常数量大于构造时记录的值,说明因异常退出, 执行函数对象。

在文件 scope.hpp182 行定义.

引用了 uncaught_exceptions().

成员函数说明

◆ release()

template<typename Func>
void scope_fail< Func >::release ( )
inlinenoexcept

释放守卫

使守卫不再执行清理操作,通过将异常计数设置为最大值来实现。

在文件 scope.hpp193 行定义.

引用了 numeric_traits< T, Dummy >::max().


该类的文档由以下文件生成: