YSTest: ystdex::call_once_init< _type, _tOnceFlag > 模板类 参考

YSTest PreAlpha_b500_20140530 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 类列表
- 类索引
- 类继承关系
- 类成员

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
Public 类型 | Public 成员函数 | 静态 Public 成员函数 | 静态 Private 成员函数 | 所有成员列表
ystdex::call_once_init< _type, _tOnceFlag > 模板类 参考
Initialization Managers

使用 call_once 的静态初始化管理器。 更多...

`#include <utility.hpp>`

## Public 类型

using | object_type = _type
using | flag_type = _tOnceFlag

## Public 成员函数

template<typename... _tParams>
| call_once_init (_tParams &&...args)
| ~call_once_init ()

## 静态 Public 成员函数

static object_type & | get ()

## 静态 Private 成员函数

static flag_type & | get_init_flag ()
static object_type *& | get_object_ptr ()
static flag_type & | get_uninit_flag ()
template<typename... _tParams>
static void | init (_tParams &&...args)
static void | uninit ()

## 详细描述

### template<typename _type, typename _tOnceFlag>
class ystdex::call_once_init< _type, _tOnceFlag >

使用 call_once 的静态初始化管理器。

模板参数

  _tOnceFlag | 初始化调用标识。

注解
  线程安全取决于 call_once 对 _tOnceFlag 的支持。 若对于支持 `<mutex>` 的实现，使用 std::once_flag ， 对应 std::call_once ，则是线程安全的； 若使用 bool ，对应 ystdex::call_once ，不保证线程安全。 其它类型可使用用户自行定义 call_once 。

自从
  build 328

待办事项:

  使用支持 lambda pack 展开的实现构造模板。

  支持分配器。

静态初始化，使用 _tOnceFlag 类型的静态对象表示初始化和反初始化状态， 保证所有在定义本类型的对象后已有静态对象被初始化。 在所有翻译单元的本类型对象析构后自动反初始化。 初始化和反初始化调用没有限定符修饰的 call_once 初始化和反初始化。 用户可以自定义 _tOnceFlag 实际参数对应的 call_once ，但声明 应与 std::call_once 和 ystdex::call_once 形式一致。

在文件 utility.hpp 第 438 行定义.

## 成员类型定义说明

template<typename _type , typename _tOnceFlag >

using ystdex::call_once_init< _type, _tOnceFlag >::flag_type = _tOnceFlag

在文件 utility.hpp 第 442 行定义.

template<typename _type , typename _tOnceFlag >

using ystdex::call_once_init< _type, _tOnceFlag >::object_type = _type

在文件 utility.hpp 第 441 行定义.

## 构造及析构函数说明

template<typename _type , typename _tOnceFlag >
template<typename... _tParams>

ystdex::call_once_init< _type, _tOnceFlag >::call_once_init | ( | _tParams &&... | args | ) |

inline

在文件 utility.hpp 第 445 行定义.

参考 YSLib::UI::args, ystdex::call_once(), ystdex::call_once_init< _type, _tOnceFlag >::get_init_flag() , 以及 yforward.

函数调用图:
template<typename _type , typename _tOnceFlag >

ystdex::call_once_init< _type, _tOnceFlag >::~call_once_init | ( |  | ) |

inline

在文件 utility.hpp 第 449 行定义.

参考 ystdex::call_once(), ystdex::call_once_init< _type, _tOnceFlag >::get_uninit_flag() , 以及 ystdex::call_once_init< _type, _tOnceFlag >::uninit().

函数调用图:

## 成员函数说明

template<typename _type , typename _tOnceFlag >

static object_type& ystdex::call_once_init< _type, _tOnceFlag >::get | ( |  | ) |

inlinestatic

在文件 utility.hpp 第 455 行定义.

参考 ystdex::call_once_init< _type, _tOnceFlag >::get_object_ptr() , 以及 yassume.

函数调用图:
template<typename _type , typename _tOnceFlag >

static flag_type& ystdex::call_once_init< _type, _tOnceFlag >::get_init_flag | ( |  | ) |

inlinestaticprivate

在文件 utility.hpp 第 463 行定义.

参考自 ystdex::call_once_init< _type, _tOnceFlag >::call_once_init().

这是这个函数的调用关系图:
template<typename _type , typename _tOnceFlag >

static object_type*& ystdex::call_once_init< _type, _tOnceFlag >::get_object_ptr | ( |  | ) |

inlinestaticprivate

在文件 utility.hpp 第 471 行定义.

参考自 ystdex::call_once_init< _type, _tOnceFlag >::get(), ystdex::call_once_init< _type, _tOnceFlag >::init() , 以及 ystdex::call_once_init< _type, _tOnceFlag >::uninit().

这是这个函数的调用关系图:
template<typename _type , typename _tOnceFlag >

static flag_type& ystdex::call_once_init< _type, _tOnceFlag >::get_uninit_flag | ( |  | ) |

inlinestaticprivate

在文件 utility.hpp 第 479 行定义.

参考自 ystdex::call_once_init< _type, _tOnceFlag >::~call_once_init().

这是这个函数的调用关系图:
template<typename _type , typename _tOnceFlag >
template<typename... _tParams>

static void ystdex::call_once_init< _type, _tOnceFlag >::init | ( | _tParams &&... | args | ) |

inlinestaticprivate

在文件 utility.hpp 第 488 行定义.

参考 YSLib::UI::args, ystdex::call_once_init< _type, _tOnceFlag >::get_object_ptr() , 以及 yforward.

函数调用图:
template<typename _type , typename _tOnceFlag >

static void ystdex::call_once_init< _type, _tOnceFlag >::uninit | ( |  | ) |

inlinestaticprivate

在文件 utility.hpp 第 494 行定义.

参考 ystdex::call_once_init< _type, _tOnceFlag >::get_object_ptr().

参考自 ystdex::call_once_init< _type, _tOnceFlag >::~call_once_init().

函数调用图:

这是这个函数的调用关系图:

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

- utility.hpp