YSTest  PreAlpha_b400_20130424
The YSLib Test Project
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
ystdex::call_once_init< _type, _tOnceFlag > 模板类 参考

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

#include <utility.hpp>

Public 类型

typedef _type object_type
 
typedef _tOnceFlag flag_type
 

Public 成员函数

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

静态 Public 成员函数

static object_typeget ()
 

静态 Private 成员函数

static flag_typeget_init_flag ()
 
static object_type *& get_object_ptr ()
 
static flag_typeget_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.hpp339 行定义.

成员类型定义说明

template<typename _type , typename _tOnceFlag >
typedef _tOnceFlag ystdex::call_once_init< _type, _tOnceFlag >::flag_type

在文件 utility.hpp343 行定义.

template<typename _type , typename _tOnceFlag >
typedef _type ystdex::call_once_init< _type, _tOnceFlag >::object_type

在文件 utility.hpp342 行定义.

构造及析构函数说明

template<typename _type , typename _tOnceFlag >
template<typename... _tParams>
ystdex::call_once_init< _type, _tOnceFlag >::call_once_init ( _tParams &&...  args)
inline
template<typename _type , typename _tOnceFlag >
ystdex::call_once_init< _type, _tOnceFlag >::~call_once_init ( )
inline

成员函数说明

template<typename _type , typename _tOnceFlag >
static object_type& ystdex::call_once_init< _type, _tOnceFlag >::get ( )
inlinestatic

在文件 utility.hpp356 行定义.

参考 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.hpp365 行定义.

参考自 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
template<typename _type , typename _tOnceFlag >
static flag_type& ystdex::call_once_init< _type, _tOnceFlag >::get_uninit_flag ( )
inlinestaticprivate

在文件 utility.hpp381 行定义.

参考自 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.hpp390 行定义.

参考 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.hpp396 行定义.

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

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

函数调用图:

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


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