YSTest: type_pun.hpp 文件参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

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

- 文件列表
- 文件成员

类 | 命名空间 | 类型定义
type_pun.hpp 文件参考
YBaseLib » YStandardExtend

共享存储和直接转换。 更多...

`#include "placement.hpp"`
`#include <new>`
type_pun.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

struct | ystdex::is_aligned_compatible< _type, _type2 >
| 判断是否对齐兼容。 更多...
struct | ystdex::is_aligned_placeable< _type, _tDst >
| 判断是否可放置对齐存储。 更多...
struct | ystdex::is_aligned_storable< _type, _tDst >
| 判断是否可对齐存储。 更多...
struct | ystdex::is_aligned_replaceable< _type, _tDst >
| 判断是否可替换对齐存储。 更多...
struct | ystdex::is_trivially_replaceable< _type, _tDst >
| 判断是否可平凡替换存储。 更多...
class | ystdex::pun_ref< _type >
| 避免严格别名分析限制的缓冲引用。 更多...
struct | ystdex::standard_layout_storage< _tUnderlying >
| 任意标准布局类型对象提供空间的存储。 更多...

## 命名空间

| ystdex
| <functional> 特性测试宏。

## 类型定义

template<typename _tSrc , typename _tDst , typename _type = void>
using | ystdex::enable_if_replaceable_t = enable_if_t< is_trivially_replaceable< _tSrc, _tDst >::value, _type >
| 选择和特定类型可替换字符类类型的特定重载以避免冲突。 更多...
template<typename _type , size_t _vAlign = std::alignment_of< _type >::value>
using | ystdex::pun_storage_t = aligned_storage_t< sizeof(_type), _vAlign >
| 显式转换的替代对齐存储对齐存储类型。 更多...
template<typename _type , size_t _vAlign = std::alignment_of< _type >::value>
using | ystdex::replace_storage_t = standard_layout_storage< pun_storage_t< _type, _vAlign >>
| 显式转换的替代标准布局替代存储类型。 更多...

## 函数

template<typename _pDst , typename _tSrc >
ystdex::enable_if_t< and_< is_object_pointer< _pDst >, is_aligned_compatible< _tSrc, remove_pointer_t< _pDst > > >::value, _pDst > | ystdex::aligned_cast (_tSrc *v)
| 保证对齐兼容的显式转换。 更多...
template<typename _rDst , typename _tSrc , typename = ystdex::enable_if_t< and_<is_reference<_rDst>, is_aligned_compatible<remove_reference_t<_tSrc>, remove_reference_t<_rDst>>>::value>>
auto | ystdex::aligned_cast (_tSrc &&v) -> decltype(std::forward< decltype(reinterpret_cast< _rDst >(v))>(reinterpret_cast< _rDst >(v)))
template<typename _pDst , typename _tSrc >
ystdex::enable_if_t< and_< is_object_pointer< _pDst >, is_aligned_storable< _tSrc, remove_pointer_t< _pDst > > >::value, _pDst > | ystdex::aligned_store_cast (_tSrc *v)
| 保证对齐存储的显式转换。 更多...
template<typename _rDst , typename _tSrc , typename = ystdex::enable_if_t< and_<is_reference<_rDst>, is_aligned_storable<remove_reference_t<_tSrc>, remove_reference_t<_rDst>>>::value>>
auto | ystdex::aligned_store_cast (_tSrc &&v) -> decltype(std::forward< decltype(reinterpret_cast< _rDst >(v))>(reinterpret_cast< _rDst >(v)))
template<typename _pDst , typename _tSrc >
ystdex::enable_if_t< and_< is_object_pointer< _pDst >, is_aligned_replaceable< _tSrc, remove_pointer_t< _pDst > > >::value, _pDst > | ystdex::aligned_replace_cast (_tSrc *v)
| 保证对齐替换存储的显式转换。 更多...
template<typename _rDst , typename _tSrc , typename = ystdex::enable_if_t< and_<is_reference<_rDst>, is_aligned_replaceable<remove_reference_t<_tSrc>, remove_reference_t<_rDst>>>::value>>
auto | ystdex::aligned_replace_cast (_tSrc &&v) -> decltype(std::forward< decltype(reinterpret_cast< _rDst >(v))>(reinterpret_cast< _rDst >(v)))
template<typename _pDst , typename _tSrc >
ystdex::enable_if_t< and_< is_object_pointer< _pDst >, is_trivially_replaceable< _tSrc, remove_pointer_t< _pDst > > >::value, _pDst > | ystdex::replace_cast (_tSrc *v)
| 保证平凡替换存储的显式转换。 更多...
template<typename _rDst , typename _tSrc , typename = ystdex::enable_if_t< and_<is_reference<_rDst>, is_trivially_replaceable<remove_reference_t<_tSrc>, remove_reference_t<_rDst>>>::value>>
auto | ystdex::replace_cast (_tSrc &&v) -> decltype(std::forward< decltype(reinterpret_cast< _rDst >(v))>(reinterpret_cast< _rDst >(v)))
template<typename _type >
using | ystdex::pun_ptr = placement_ptr< decay_t< _type >>
| 避免严格别名分析限制的缓冲独占所有权指针。 更多...
template<typename _type , typename _tObj , typename... _tParams>
pun_ptr< _type > | ystdex::make_pun (_tObj &obj, _tParams &&...args)
| 构造避免严格别名分析限制的缓冲独占所有权指针指定的值初始化对象。 更多...
template<typename _type , typename _tObj >
pun_ptr< _type > | ystdex::make_pun_default (_tObj &obj)
| 构造避免严格别名分析限制的缓冲独占所有权指针指定的默认初始化对象。 更多...

## 详细描述

共享存储和直接转换。

版本
  r533

作者
  FrankHB frank.nosp@m.hb19.nosp@m.89@gm.nosp@m.ail..nosp@m.com

自从
  build 629

创建时间:
  2015-09-04 12:16:27 +0800

修改时间:
  2016-09-20 10:11 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::TypePun

在文件 type_pun.hpp 中定义.