YSTest: Cast

YSTest PreAlpha_b500_20140530 The YSLib Test Project

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

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
函数
Cast

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

## 函数

template<typename _tDst , typename _tSrc >
_tDst | ystdex::union_cast (_tSrc x)
| 使用匿名联合体进行的类型转换。 更多...
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 _rDst , class _tSrc >
enable_if_t<!is_reference < _tSrc >::value, _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 _rDst , class _tSrc >
enable_if_t<!is_reference < _tSrc >::value, _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.hpp 第 320 行定义.

template<typename _tDst , typename _tSrc >

_tDst ystdex::general_cast | ( | _tSrc & | x | ) |

inline

在文件 cast.hpp 第 327 行定义.

template<typename _tDst , typename _tSrc >

const _tDst ystdex::general_cast | ( | const _tSrc & | x | ) |

inline

在文件 cast.hpp 第 334 行定义.

template<typename _pDst , class _tSrc >

_pDst ystdex::polymorphic_cast | ( | _tSrc * | x | ) |

inline

多态类指针类型转换。

模板参数

  _tSrc | 源类型。
  _pDst | 目标类型。

前置条件
  静态断言： _tSrc 是多态类。
  静态断言： _pDst 是内建指针。

异常

  std::bad_cast | dynamic_cast 失败。

自从
  build 175

在文件 cast.hpp 第 96 行定义.

template<typename _pDst , class _tSrc >

_pDst ystdex::polymorphic_crosscast | ( | _tSrc * | x | ) |

inline

多态类指针交叉转换。

模板参数

  _tSrc | 源类型。
  _pDst | 目标类型。

前置条件
  静态断言： _tSrc 是多态类。
  静态断言： _pDst 是内建指针。
  断言： dynamic_cast 成功。

返回
  非空结果。

注解
  空指针作为参数一定失败。

自从
  build 179

在文件 cast.hpp 第 184 行定义.

参考 yassume.

template<typename _rDst , class _tSrc >

_rDst ystdex::polymorphic_crosscast | ( | _tSrc & | x | ) |

inline

模板参数

  _tSrc | 源类型。
  _rDst | 目标类型。

前置条件
  静态断言： _rDst 是左值引用。

自从
  build 496

在文件 cast.hpp 第 202 行定义.

template<typename _rDst , class _tSrc >

enable_if_t<!is_reference<_tSrc>::value, _rDst> ystdex::polymorphic_crosscast | ( | _tSrc && | x | ) |

inline

模板参数

  _tSrc | 源类型。
  _rDst | 目标类型。

前置条件
  静态断言： _rDst 是右值引用。

自从
  build 496

在文件 cast.hpp 第 218 行定义.

template<typename _pDst , class _tSrc >

_pDst ystdex::polymorphic_downcast | ( | _tSrc * | x | ) |

inline

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

模板参数

  _tSrc | 源类型。
  _pDst | 目标类型。

前置条件
  静态断言： _tSrc 是多态类。
  静态断言： _pDst 是内建指针。
  静态断言： _tSrc 是 _pDst 指向的类去除修饰符后的基类。
  断言： dynamic_cast 成功。

自从
  build 175

在文件 cast.hpp 第 124 行定义.

参考 yassume.

template<typename _rDst , class _tSrc >

_rDst ystdex::polymorphic_downcast | ( | _tSrc & | x | ) |

inline

模板参数

  _tSrc | 源类型。
  _rDst | 目标类型。

前置条件
  静态断言： _rDst 是左值引用。

自从
  build 496

在文件 cast.hpp 第 142 行定义.

template<typename _rDst , class _tSrc >

enable_if_t<!is_reference<_tSrc>::value, _rDst> ystdex::polymorphic_downcast | ( | _tSrc && | x | ) |

inline

模板参数

  _tSrc | 源类型。
  _rDst | 目标类型。

前置条件
  静态断言： _rDst 是右值引用。

自从
  build 496

在文件 cast.hpp 第 158 行定义.

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.hpp 第 56 行定义.