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

YSTest PreAlpha_b900_20201012 The YSLib Test Project

Public 类型 | Public 成员函数 | Private 属性 | 所有成员列表
ystdex::call_once_init< _type, _tOnceFlag > 模板类 参考
Initialization Managers

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

`#include <utility.hpp>`

类 ystdex::call_once_init< _type, _tOnceFlag > 继承关系图:
[图例]
ystdex::call_once_init< _type, _tOnceFlag > 的协作图:
[图例]

## Public 类型

using | object_type = _type
using | flag_type = _tOnceFlag

## Public 成员函数

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

## Private 属性

flag_type | init_flag
flag_type | deinit_flag
replace_storage_t< _type > | storage

## 额外继承的成员函数

Private 成员函数 继承自 ystdex::bases::noncopyable
| noncopyable (const noncopyable &)=delete
| 禁止复制构造。 更多...
| noncopyable (noncopyable &&)=default
| 允许转移构造。 更多...
noncopyable & | operator= (const noncopyable &)=delete
| 禁止复制赋值。 更多...
noncopyable & | operator= (noncopyable &&)=default
| 允许转移赋值。 更多...
| noncopyable ()=default
| `protected` 构造：默认实现。 更多...
| ~noncopyable ()=default
| `protected` 析构：默认实现。 更多...
Private 成员函数 继承自 ystdex::bases::nonmovable
| nonmovable (const nonmovable &)=default
| 允许复制构造。 更多...
| nonmovable (nonmovable &&)=delete
| 禁止转移构造。 更多...
nonmovable & | operator= (const nonmovable &)=default
| 允许复制赋值。 更多...
nonmovable & | operator= (nonmovable &&)=delete
| 禁止转移赋值。 更多...
| nonmovable ()=default
| `protected` 构造：默认实现。 更多...
| ~nonmovable ()=default
| `protected` 析构：默认实现。 更多...

## 详细描述

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

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

模板参数

  _tOnceFlag | 初始化调用标识。

注解
  使用 ADL call_once 。
  线程安全取决于 call_once 对 _tOnceFlag 的支持。 若对支持 `<mutex>` 的实现使用 std::once_flag ， 对应 std::call_once ，则是线程安全的。

自从
  build 328

待办事项:

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

  支持分配器。

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

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

## 成员类型定义说明

## ◆ flag_type

template<typename _type , typename _tOnceFlag >

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

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

## ◆ object_type

template<typename _type , typename _tOnceFlag >

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

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

## 构造及析构函数说明

## ◆ call_once_init()

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

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

inline

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

## ◆ ~call_once_init()

template<typename _type , typename _tOnceFlag >

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

inline

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

## 成员函数说明

## ◆ get() [1/2]

template<typename _type , typename _tOnceFlag >

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

inline

自从
  build 693

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

被这些函数引用 ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::call_once_init() , 以及 ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::~call_once_init().

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

## ◆ get() [2/2]

template<typename _type , typename _tOnceFlag >

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

inline

自从
  build 693

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

## 类成员变量说明

## ◆ deinit_flag

template<typename _type , typename _tOnceFlag >

flag_type ystdex::call_once_init< _type, _tOnceFlag >::deinit_flag

private

自从
  build 894

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

被这些函数引用 ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::~call_once_init().

## ◆ init_flag

template<typename _type , typename _tOnceFlag >

flag_type ystdex::call_once_init< _type, _tOnceFlag >::init_flag

private

自从
  build 693

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

被这些函数引用 ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::call_once_init().

## ◆ storage

template<typename _type , typename _tOnceFlag >

replace_storage_t<_type> ystdex::call_once_init< _type, _tOnceFlag >::storage

private

自从
  build 693

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

被这些函数引用 ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::get().

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

- utility.hpp