YSTest  PreAlpha_b400_20130424
The YSLib Test Project
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
Cast

显式类型转换。 更多...

函数

template<typename _tDst , typename _tSrc >
_tDst ystdex::union_cast (_tSrc x) ynoexcept
 使用匿名联合体进行的类型转换。
 
template<typename _pDst , class _tSrc >
_pDst ystdex::polymorphic_cast (_tSrc *x)
 多态类指针类型转换。
 
template<typename _pDst , class _tSrc >
_pDst ystdex::polymorphic_downcast (_tSrc *x)
 多态类指针向派生类指针转换。
 
template<typename _rDst , class _tSrc >
_rDst & ystdex::polymorphic_downcast (_tSrc &x)
 多态类引用向派生类引用转换。
 
template<typename _pDst , class _tSrc >
_pDst ystdex::polymorphic_crosscast (_tSrc *x)
 多态类指针交叉转换。
 
template<typename _rDst , class _tSrc >
_rDst & ystdex::polymorphic_crosscast (_tSrc &x)
 多态类引用交叉转换。
 
template<typename _tDst , typename _tSrc >
_tDst ystdex::general_cast (_tSrc *x)
 一般类型转换。
 
template<typename _tDst , typename _tSrc >
_tDst ystdex::general_cast (_tSrc &x)
 
template<typename _tDst , typename _tSrc >
const _tDst ystdex::general_cast (const _tSrc &x)
 

详细描述

显式类型转换。

自从
build 243

函数说明

template<typename _tDst , typename _tSrc >
_tDst ystdex::general_cast ( _tSrc *  x)
inline

一般类型转换。

模板参数
_tSrc源类型。
_tDst目标类型。
自从
build 175
待办事项:
扩展接受右值引用参数。

能确保安全隐式转换时使用 static_cast ; 除此之外非虚基类向派生类转换使用 polymophic_downcast; 否则使用 dynamic_cast。

在文件 cast.hpp279 行定义.

template<typename _tDst , typename _tSrc >
_tDst ystdex::general_cast ( _tSrc &  x)
inline

在文件 cast.hpp286 行定义.

template<typename _tDst , typename _tSrc >
const _tDst ystdex::general_cast ( const _tSrc &  x)
inline

在文件 cast.hpp293 行定义.

template<typename _pDst , class _tSrc >
_pDst ystdex::polymorphic_cast ( _tSrc *  x)
inline

多态类指针类型转换。

模板参数
_tSrc源类型。
_pDst目标类型。
前置条件
静态断言: _tSrc 是多态类。
静态断言: _pDst 是内建指针。
异常
std::bad_castdynamic_cast 失败。
自从
build 175

在文件 cast.hpp94 行定义.

template<typename _pDst , class _tSrc >
_pDst ystdex::polymorphic_crosscast ( _tSrc *  x)
inline

多态类指针交叉转换。

模板参数
_tSrc源类型。
_pDst目标类型。
前置条件
静态断言: _tSrc 是多态类。
静态断言: _pDst 是内建指针。
断言: dynamic_cast 成功。
返回
非空结果。
注解
空指针作为参数一定失败。
自从
build 179

在文件 cast.hpp164 行定义.

参考 yassume.

参考自 ystdex::polymorphic_crosscast().

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

template<typename _rDst , class _tSrc >
_rDst& ystdex::polymorphic_crosscast ( _tSrc &  x)
inline

多态类引用交叉转换。

模板参数
_tSrc源类型。
_rDst目标类型。
前置条件
静态断言: _rDst 是引用。
自从
build 179
待办事项:
扩展接受右值引用参数。

在文件 cast.hpp185 行定义.

参考 ystdex::polymorphic_crosscast().

函数调用图:

template<typename _pDst , class _tSrc >
_pDst ystdex::polymorphic_downcast ( _tSrc *  x)
inline

多态类指针向派生类指针转换。

模板参数
_tSrc源类型。
_pDst目标类型。
前置条件
静态断言: _tSrc 是多态类。
静态断言: _pDst 是内建指针。
静态断言: _tSrc 是 _pDst 指向的类去除修饰符后的基类。
断言: dynamic_cast 成功。
自从
build 175

在文件 cast.hpp119 行定义.

参考 yassume.

参考自 ystdex::polymorphic_downcast().

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

template<typename _rDst , class _tSrc >
_rDst& ystdex::polymorphic_downcast ( _tSrc &  x)
inline

多态类引用向派生类引用转换。

模板参数
_tSrc源类型。
_rDst目标类型。
前置条件
静态断言: _rDst 是引用。
自从
build 175
待办事项:
扩展接受右值引用参数。

在文件 cast.hpp141 行定义.

参考 ystdex::polymorphic_downcast().

函数调用图:

template<typename _tDst , typename _tSrc >
_tDst ystdex::union_cast ( _tSrc  x)
inline

使用匿名联合体进行的类型转换。

模板参数
_tSrc源类型。
_tDst目标类型。
前置条件
is_pod<_tDst>::value && sizeof<_tSrc> == sizeof<_tDst>
自从
build 297

在文件 cast.hpp55 行定义.