YSTest: ystdex::any类 参考

YSTest PreAlpha_b500_20140530 The YSLib Test Project

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

- 类列表
- 类索引
- 类继承关系
- 类成员

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
Public 成员函数 | 所有成员列表
ystdex::any类 参考

基于类型擦除的动态泛型对象。 更多...

`#include <any.h>`

类 ystdex::any 继承关系图:
[图例]
ystdex::any 的协作图:
[图例]

## Public 成员函数

| any ()
template<typename _type , typename = exclude_self_ctor_t<any, _type>>
| any (_type &&x)
| any (const any &)
| any (any &&a)
| ~any ()
template<typename _type >
any & | operator= (const _type &x)
any & | operator= (const any &a)
| 复制赋值：使用复制和交换。 更多...
any & | operator= (any &&a)
| 转移赋值：使用复制和交换。 更多...
bool | operator! () const
| operator bool () const
bool | empty () const
void * | get () const
any_ops::holder * | get_holder () const
void | clear ()
void | swap (any &a)
const std::type_info & | type () const
template<typename _type >
| any (std::reference_wrapper< _type > x)
template<typename _tHolder >
| any (any_ops::holder_tag, std::unique_ptr< _tHolder > p)
| 构造：使用指定持有者。 更多...
template<typename _type >
| any (_type &&x, any_ops::holder_tag)
template<typename _type >
_type * | target ()
template<typename _type >
const _type * | target () const

## Protected 属性

any_ops::any_storage | storage
any_ops::any_manager | manager

## 相关函数

(请注意: 这些不是成员函数.)
template<typename _tPointer >
_tPointer | any_cast (any *p)
| 动态泛型转换。 更多...
template<typename _tValue >
_tValue | any_cast (any &x)
template<typename _type >
_type * | unsafe_any_cast (any *p)
| 非安全动态泛型转换。 更多...

## 详细描述

基于类型擦除的动态泛型对象。

注解
  值语义。基本接口和语义同 std::any 提议和 boost::any （对应接口以前者为准）。

警告
  非虚析构。

参见
  http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3508.html#synopsis 。
  http://www.boost.org/doc/libs/1_53_0/doc/html/any/reference.html#any.ValueType 。

自从
  build 331

待办事项:
  allocator_arg 支持。

在文件 any.h 第 584 行定义.

## 构造及析构函数说明

ystdex::any::any | ( |  | ) |

inline

后置条件
  `this->empty()` 。

在文件 any.h 第 596 行定义.

template<typename _type , typename = exclude_self_ctor_t<any, _type>>

ystdex::any::any | ( | _type && | x | ) |

inline

自从
  build 448

在文件 any.h 第 601 行定义.

参考 yforward.

template<typename _type >

ystdex::any::any | ( | std::reference_wrapper< _type > | x | ) |

inline

自从
  build 376

在文件 any.h 第 610 行定义.

template<typename _tHolder >

ystdex::any::any | ( | any_ops::holder_tag | ,
|  | std::unique_ptr< _tHolder > | p
| ) |  |

inline

构造：使用指定持有者。

自从
  build 395

在文件 any.h 第 620 行定义.

template<typename _type >

ystdex::any::any | ( | _type && | x,
|  | any_ops::holder_tag |
| ) |  |

inline

在文件 any.h 第 626 行定义.

参考 yforward.

ystdex::any::any | ( | const any & | a | ) |

在文件 any.cpp 第 33 行定义.

参考 ystdex::any_ops::clone, manager , 以及 storage.

ystdex::any::any | ( | any && | a | ) |

inline

在文件 any.h 第 635 行定义.

参考 swap().

函数调用图:

ystdex::any::~any | ( |  | ) |

自从
  build 382

在文件 any.cpp 第 42 行定义.

参考 ystdex::any_ops::destroy, manager , 以及 storage.

## 成员函数说明

void ystdex::any::clear | ( |  | ) |

在文件 any.cpp 第 75 行定义.

参考 ystdex::any_ops::destroy, manager , 以及 storage.

bool ystdex::any::empty | ( |  | ) | const

inline

在文件 any.h 第 684 行定义.

void * ystdex::any::get | ( |  | ) | const

自从
  build 352

在文件 any.cpp 第 49 行定义.

参考 ystdex::pod_storage< _tPOD >::access(), ystdex::any_ops::get_ptr, manager , 以及 storage.

参考自 unsafe_any_cast().

函数调用图:

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

any_ops::holder * ystdex::any::get_holder | ( |  | ) | const

在文件 any.cpp 第 62 行定义.

参考 ystdex::pod_storage< _tPOD >::access(), ystdex::any_ops::get_holder_ptr, manager , 以及 storage.

函数调用图:

ystdex::any::operator bool | ( |  | ) | const

inlineexplicit

在文件 any.h 第 678 行定义.

bool ystdex::any::operator! | ( |  | ) | const

inline

在文件 any.h 第 672 行定义.

template<typename _type >

any& ystdex::any::operator= | ( | const _type & | x | ) |

inline

在文件 any.h 第 645 行定义.

参考 swap().

函数调用图:

any& ystdex::any::operator= | ( | const any & | a | ) |

inline

复制赋值：使用复制和交换。

自从
  build 332

在文件 any.h 第 655 行定义.

参考 swap().

函数调用图:

any& ystdex::any::operator= | ( | any && | a | ) |

inline

转移赋值：使用复制和交换。

自从
  build 332

在文件 any.h 第 665 行定义.

参考 swap().

函数调用图:

void ystdex::any::swap | ( | any & | a | ) |

在文件 any.cpp 第 85 行定义.

参考 ystdex::swap().

参考自 any() , 以及 operator=().

函数调用图:

这是这个函数的调用关系图:
template<typename _type >

_type* ystdex::any::target | ( |  | ) |

inline

自从
  build 352

在文件 any.h 第 706 行定义.

template<typename _type >

const _type* ystdex::any::target | ( |  | ) | const

inline

在文件 any.h 第 712 行定义.

const std::type_info & ystdex::any::type | ( |  | ) | const

自从
  build 340

在文件 any.cpp 第 92 行定义.

参考 ystdex::pod_storage< _tPOD >::access(), ystdex::any_ops::get_type, manager , 以及 storage.

参考自 any_cast() , 以及 ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::equals().

函数调用图:

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

## 友元及相关函数文档

template<typename _tPointer >

_tPointer any_cast | ( | any * | p | ) |

related

动态泛型转换。

返回
  当 `p && p->type() == typeid(remove_pointer_t<_tPointer>)` 时 为指向对象的指针，否则为空指针。

注解
  语义同 boost::any_cast 。

自从
  build 398

待办事项:
  检验特定环境（如使用动态库时）比较 std::type_info::name() 的必要性。

在文件 any.h 第 795 行定义.

template<typename _tValue >

_tValue any_cast | ( | any & | x | ) |

related

异常

  bad_any_cast | 当 `x.type() != typeid(remove_reference_t<_tValue>)` 。

在文件 any.h 第 813 行定义.

参考 type().

函数调用图:
template<typename _type >

_type * unsafe_any_cast | ( | any * | p | ) |

related

非安全动态泛型转换。

注解
  语义同 boost::unsafe_any_cast 。

前置条件
  断言： `p` 。

自从
  build 331

在文件 any.h 第 844 行定义.

参考 get() , 以及 yconstraint.

函数调用图:

## 类成员变量说明

any_ops::any_manager ystdex::any::manager

protected

在文件 any.h 第 590 行定义.

参考自 any(), ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::any_input_iterator(), ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::check_undereferenceable(), clear(), ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::equals(), get(), get_holder(), ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::operator*(), ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::operator++(), ystdex::any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference >::operator--(), type() , 以及 ~any().

any_ops::any_storage ystdex::any::storage

protected

自从
  build 355

在文件 any.h 第 589 行定义.

参考自 any(), ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::any_input_iterator(), ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::check_undereferenceable(), clear(), ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::equals(), get(), get_holder(), ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::operator*(), ystdex::any_input_iterator< _type, _tDifference, _tPointer, _tReference >::operator++(), ystdex::any_bidirectional_iterator< _type, _tDifference, _tPointer, _tReference >::operator--(), type() , 以及 ~any().

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

- any.h
- any.cpp