YSTest: ystdex::any类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

Public 类型 | Public 成员函数 | Private 类型 | Private 成员函数 | 友元 | 相关函数 | 所有成员列表
ystdex::any类 参考
YBase Replacement features

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

`#include <any.h>`

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

## Public 类型

template<typename _type >
using | opt_in_place_t = details::any_in_place_t< _type >
| 判断使用分配器构造时是否忽略分配器而在原地存储。 更多...
template<class _tAlloc , typename _type >
using | allocated_value_handler_t = cond_t< any::opt_in_place_t< _type >, any_ops::value_handler< _type >, any_ops::allocator_value_handler_t< _tAlloc, _type > >
| 根据分配器类型和存储对象的类型取使用分配器构造时的处理器。 更多...
template<class _tAlloc , class _tHolder >
using | allocated_holder_handler_t = cond_t< any::opt_in_place_t< _tHolder >, any_ops::holder_handler< _tHolder >, any_ops::allocator_holder_handler_t< _tAlloc, _tHolder > >
| 根据分配器类型和存储对象的类型取使用分配器和持有者构造时的处理器。 更多...

## Public 成员函数

| any ()=default
| any (default_init_t)
template<typename _type , typename = exclude_self_t<any, _type>, typename = exclude_tag_t<_type>>
| any (_type &&x)
template<typename _type , class _tAlloc , typename = exclude_self_t<any, _type>, typename = exclude_tag_t<_type>>
| any (std::allocator_arg_t, const _tAlloc &a, _type &&x)
template<typename _type , typename... _tParams, typename = enable_if_t<is_constructible<decay_t<_type>, _tParams...>::value>>
| any (in_place_type_t< _type >, _tParams &&... args)
template<typename _type , class _tAlloc , typename... _tParams, typename = enable_if_t<is_constructible<decay_t<_type>, _tParams...>::value>>
| any (std::allocator_arg_t, const _tAlloc &a, in_place_type_t< _type >, _tParams &&... args)
template<typename _type , typename _type2 , typename... _tParams, typename = enable_if_t<is_constructible<decay_t<_type>, std::initializer_list<_type2>&, _tParams...>::value>>
| any (in_place_type_t< _type >, std::initializer_list< _type2 > il, _tParams &&... args)
template<typename _type , typename _type2 , class _tAlloc , typename... _tParams, typename = enable_if_t<is_constructible<decay_t<_type>, std::initializer_list<_type2>&, _tParams...>::value>>
| any (std::allocator_arg_t, const _tAlloc &a, in_place_type_t< _type >, std::initializer_list< _type2 > il, _tParams &&... args)
template<typename _tHolder , typename = enable_with_handler_params_t< is_holder_arg_t<_tHolder>, any_ops::holder_handler, empty_base<_tHolder>, std::unique_ptr<_tHolder>>>
| any (any_ops::use_holder_t, std::unique_ptr< _tHolder > p)
| 构造：使用指定持有者。 更多...
template<typename _tHolder , typename = enable_with_handler_params_t< is_holder_arg_t<decay_t<_tHolder>>, any_ops::holder_handler, empty_base<decay_t<_tHolder>>, _tHolder>>
| any (any_ops::use_holder_t, _tHolder &&h)
template<typename _tHolder , class _tAlloc , typename = enable_with_handler_params_t< is_holder_arg_t<decay_t<_tHolder>>, any_ops::allocator_holder_handler_t, empty_base<_tAlloc, decay_t<_tHolder>>, const _tAlloc&, _tHolder>>
| any (std::allocator_arg_t, const _tAlloc &a, any_ops::use_holder_t, _tHolder &&h)
template<typename _tHolder , typename... _tParams, typename = enable_with_handler_params_t<is_holder_arg_t<_tHolder>, any_ops::holder_handler, empty_base<_tHolder>, _tParams...>>
| any (any_ops::use_holder_t, in_place_type_t< _tHolder >, _tParams &&... args)
template<typename _tHolder , class _tAlloc , typename... _tParams, typename = enable_with_handler_params_t<is_holder_arg_t<_tHolder>, any_ops::allocator_holder_handler_t, empty_base<_tAlloc, _tHolder>, const _tAlloc&, _tParams...>>
| any (std::allocator_arg_t, const _tAlloc &a, any_ops::use_holder_t, in_place_type_t< _tHolder >, _tParams &&... args)
template<typename _type , typename = exclude_tag_t<_type>, typename = enable_with_handler_t< any_ops::holder_handler<any_ops::value_holder<decay_t<_type>>>, _type>>
| any (_type &&x, any_ops::use_holder_t)
template<class _tAlloc , typename _type , typename = exclude_tag_t<_type>, typename = exclude_tag_t<_tAlloc>, typename = enable_with_handler_t<any_ops::allocator_holder_handler_t<_tAlloc, any_ops::value_holder<decay_t<_type>>>, const _tAlloc&, _type>>
| any (std::allocator_arg_t, const _tAlloc &a, _type &&x, any_ops::use_holder_t)
template<class _tHandler , typename... _tParams, typename = enable_with_handler_t<_tHandler, _tParams...>>
| any (any_ops::with_handler_t< _tHandler > t, _tParams &&... args)
template<class _tHandler , class _tAlloc , typename... _tParams, typename = enable_with_handler_t<_tHandler, const _tAlloc&, _tParams...>>
| any (std::allocator_arg_t, const _tAlloc &a, any_ops::with_handler_t< _tHandler > t, _tParams &&... args)
| any (const any &x)
template<class _tAlloc >
| any (std::allocator_arg_t, const _tAlloc &a, const any &x)
| any (any &&x)
template<class _tAlloc >
| any (std::allocator_arg_t, const _tAlloc &a, any &&x)
| ~any ()
template<typename _type , typename = exclude_self_t<any, _type>, typename = exclude_tag_t<_type>>
any & | operator= (_type &&x)
any & | operator= (const any &a)
| 复制赋值：使用复制和交换。 更多...
any & | operator= (any &&a)
| 转移赋值。 更多...
void * | get () const
any_ops::holder * | get_holder () const
template<typename _type >
_type * | get_object_ptr ()
| 取目标指针。 更多...
template<typename _type >
const _type * | get_object_ptr () const
void | reset ()
void | swap (any &a)
| 交换对象。 更多...
template<typename _type >
_type * | try_get_object_ptr ()
| 尝试取目标指针：存储目标类型和模板参数相同且不存在持有者抛出的异常。 更多...
template<typename _type >
const _type * | try_get_object_ptr () const
const type_info & | type () const
void * | unchecked_get () const
| 取包含对象的指针。 更多...
any_ops::holder * | unchecked_get_holder () const
| 取持有者指针。 更多...
const type_info & | unchecked_type () const
| 取包含对象的类型。 更多...

## Private 类型

template<bool _vInPlace = false>
using | alloc_tag = details::alloc_tag< _vInPlace >
template<class _tHandler , typename... _tParams>
using | enable_with_handler_t = enable_if_t< is_constructible< any_ops::any_manager, decltype(any_ops::construct< _tHandler >(std::declval< any_ops::any_storage & >(), std::declval< _tParams >()...))> ::value >
template<class _tCtor , class _tParamsList , typename... _tParams>
using | is_handler_v_constructible_t = any_ops::is_handler_constructible_t< vseq::defer_apply_t< _tCtor, _tParamsList >, _tParams... >
template<class _bCond , template< typename... > class _gHandler, class _tParamsList , typename... _tParams>
using | enable_with_handler_params_t = enable_if_t< cond_or_t< _bCond, false_, is_handler_v_constructible_t, vseq::_a< _gHandler >, _tParamsList, _tParams... >::value >
template<typename _tParam >
using | is_holder_arg_t = and_< details::not_tag_t< _tParam >, any_ops::check_holder_t< _tParam > >
Private 类型 继承自 ystdex::details::any_emplace< any >
using | alloc_tag = details::alloc_tag< _vInPlace >
using | opt_in_place_t = details::any_in_place_t< _type >

## Private 成员函数

template<class _tAlloc , typename... _tParams>
| any (alloc_tag< true >, const _tAlloc &, _tParams &&... args)
template<typename _type , class _tAlloc >
| any (alloc_tag<>, const _tAlloc &a, _type &&x)
template<typename _type , class _tAlloc , typename... _tParams>
| any (alloc_tag<>, const _tAlloc &a, in_place_type_t< _type >, _tParams &&... args)
template<typename _type , typename _type2 , class _tAlloc , typename... _tParams>
| any (alloc_tag<>, const _tAlloc &a, in_place_type_t< _type >, std::initializer_list< _type2 > il, _tParams &&... args)
template<typename _tHolder , class _tAlloc >
| any (alloc_tag<>, const _tAlloc &a, any_ops::use_holder_t, _tHolder &&h)
template<typename _tHolder , class _tAlloc , typename... _tParams>
| any (alloc_tag<>, const _tAlloc &a, any_ops::use_holder_t, in_place_type_t< _tHolder >, _tParams &&... args)
template<class _tAlloc , typename _type >
| any (alloc_tag<>, const _tAlloc &a, _type &&x, any_ops::use_holder_t)
template<class _tAlloc >
void | do_alloc_init (const _tAlloc &a, const any &x, any_ops::op_code op)
template<class _tByteAlloc >
void | do_alloc_init_impl (const _tByteAlloc &a, const any &x, any_ops::op_code op)
Private 成员函数 继承自 ystdex::details::any_base
any_ops::any_storage & | call (any_ops::any_storage &t, any_ops::op_code op) const
void | checked_destroy ()
void | destroy ()
void * | get () const
any_ops::holder * | get_holder () const
template<typename _type >
_type * | get_object_ptr ()
template<typename _type >
const _type * | get_object_ptr () const
any_ops::any_storage & | get_storage () const
bool | has_value () const
void | move_from (any_base &a)
void | swap (any_base &a)
template<typename _type >
_type * | try_get_object_ptr ()
template<typename _type >
const _type * | try_get_object_ptr () const
void * | try_get () const
| 取类型中立的对象指针。 更多...
const type_info & | type () const
template<typename _type , typename... _tParams>
_type | unchecked_access (any_ops::op_code op, _tParams &&... args) const
template<typename _type >
_type | unchecked_access (default_init_t, any_ops::op_code op) const
template<typename _type >
_type | unchecked_access (any_ops::any_storage &t, any_ops::op_code op) const
| any_base ()
| any_base (default_init_t)
template<class _tHandler , typename... _tParams>
| any_base (any_ops::with_handler_t< _tHandler >, _tParams &&... args)
| any_base (const any_base &a)
| ~any_base ()=default
Private 成员函数 继承自 ystdex::details::any_emplace< any >
decay_t< _type > & | emplace (_tParams &&... args)
decay_t< _type > & | emplace (std::allocator_arg_t, const _tAlloc &a, _tParams &&... args)
decay_t< _type > & | emplace (std::initializer_list< _tOther > il, _tParams &&... args)
decay_t< _type > & | emplace (std::allocator_arg_t, const _tAlloc &a, std::initializer_list< _tOther > il, _tParams &&... args)
decay_t< _tHolder > & | emplace (any_ops::use_holder_t, _tParams &&... args)
decay_t< _tHolder > & | emplace (std::allocator_arg_t, const _tAlloc &a, any_ops::use_holder_t, _tParams &&... args)
void | emplace_with_handler (_tParams &&... args)
decay_t< _tHolder > & | unchecked_holder_ref ()
decay_t< _type > & | unchecked_target_ref ()

## 友元

void | swap (any &x, any &y)

## 相关函数

(请注意: 这些不是成员函数.)
template<typename _type , typename... _tParams>
any | make_any (_tParams &&... args)
| 创建 any 对象。 更多...

## 额外继承的成员函数

Private 属性 继承自 ystdex::details::any_base
any_ops::any_storage | storage
any_ops::any_manager | manager

## 详细描述

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

警告
  非虚析构。

参见
  ISO C++17 [any.class] 。
  http://www.boost.org/doc/libs/1_69_0/doc/html/any/reference.html#any.ValueType 。

自从
  build 331

值传递语义的动态泛型对象包装。 基本接口和语义同 ISO C++17 std::any 提议和 boost::any （对应接口以前者为准）。 和 std::any 不同，支持不满足 CopyConstructible 或 MoveConstructible 的对象。 作为扩展，基于命名空间 any_ops 支持更多的可扩展的底层接口。 和 std::any 类似，部分情形构造排除 in_place_type_t 的实例作为值类型对象。 作为扩展，同时也排除 std::allocator_arg_t 、 any_ops::with_handler_t 的实例和 any_ops::use_holder_t 作为值的类型。 构造时使用 any_ops::with_handler_t 显式指定处理器，可调用 any_ops 支持的接口。 保存对象状态的内部数据存储在 any_ops::any_storage ，通过处理器访问。 处理器是满足特定条件的类类型。 处理器以管理操作 any_ops::any_manager 引用。 处理器具有静态成员函数 manage ，可初始化 any_ops::any_manager 。 处理器具有静态成员函数或函数模板 init ，可初始化 any_ops::any_storage 中的值。 当前支持的处理器都定义在命名空间 any_ops 。 处理器还满足其它一些当前未指定的要求。 管理操作在初始化时被指定，当且仅当空对象时为空，并被复位为空对象的操作复位为空值。 赋值和其它修改对象的其它操作可能修改管理操作。 空对象的内部数据是未指定的有效值，可能是未决定值，不应被读取，否则行为未定义。 管理操作蕴含的处理器对内部数据进行操作时，应满足以下一致性要求，否则行为未定义： 处理器中的初始化操作应保证初始化后的状态和处理器一致， 即储存动态类型符合处理器预期的对象； 读取内部存储的操作应和管理操作蕴含的处理器一致； 写入内部数据后应保证之后的状态和管理操作蕴含的处理器一致。 以引用包装存储时无视 cv 修饰符。访问不检查动态类型，应注意避免未定义行为。 具有相同类型对象的 any 对象，使用不同的处理器应保证具有相同的动态类型，即成员函数 type 和 unchekced_type 返回相同的结果。 默认情形调用的 any_ops::value_handler 的实例作为处理器，对所有的对象具有所有权。 使用 any_ops::ref_handler 处理引用包装类型，此时不具有所有权，但仍可复制值。 使用 any_ops::wrap_handler 根据类型选择按值或按引用保存的处理器。 尽管都能复制值，但所有权不同容易引起误用，所以默认不直接以 any 的构造函数提供。 构造支持分配器。初始化需要分配时： 不使用分配器的初始化，使用 new 和 delete 管理资源分配； 使用分配器的初始化，由 allocator_traits 实例的 construct 和 destroy 管理资源分配。 使用分配器时，保存分配器的副本。

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

## 成员类型定义说明

## ◆ alloc_tag

template<bool _vInPlace = false>

using ystdex::any::alloc_tag = details::alloc_tag<_vInPlace>

private

自从
  build 848

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

## ◆ allocated_holder_handler_t

template<class _tAlloc , class _tHolder >

using ystdex::any::allocated_holder_handler_t = cond_t<any::opt_in_place_t<_tHolder>, any_ops::holder_handler<_tHolder>, any_ops::allocator_holder_handler_t<_tAlloc, _tHolder> >

根据分配器类型和存储对象的类型取使用分配器和持有者构造时的处理器。

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

## ◆ enable_with_handler_params_t

template<class _bCond , template< typename... > class _gHandler, class _tParamsList , typename... _tParams>

using ystdex::any::enable_with_handler_params_t = enable_if_t<cond_or_t<_bCond, false_, is_handler_v_constructible_t, vseq::_a<_gHandler>, _tParamsList, _tParams...>::value>

private

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

## ◆ enable_with_handler_t

template<class _tHandler , typename... _tParams>

using ystdex::any::enable_with_handler_t = enable_if_t<is_constructible< any_ops::any_manager, decltype(any_ops::construct<_tHandler>( std::declval<any_ops::any_storage&>(), std::declval<_tParams>()...))> ::value>

private

自从
  build 851

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

## ◆ is_handler_v_constructible_t

template<class _tCtor , class _tParamsList , typename... _tParams>

using ystdex::any::is_handler_v_constructible_t = any_ops::is_handler_constructible_t< vseq::defer_apply_t<_tCtor, _tParamsList>, _tParams...>

private

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

## ◆ is_holder_arg_t

template<typename _tParam >

using ystdex::any::is_holder_arg_t = and_<details::not_tag_t<_tParam>, any_ops::check_holder_t<_tParam> >

private

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

## 构造及析构函数说明

## ◆ any() [1/23]

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

inlinedefault

后置条件
  `!has_value`() 。

## ◆ any() [2/23]

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

inlineexplicit

自从
  build 848

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

## ◆ any() [3/23]

template<typename _type , typename = exclude_self_t<any, _type>, typename = exclude_tag_t<_type>>

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

inline

注解
  YStandardEx 扩展：允许不满足 CopyConstructible 的类型的值作为参数。

自从
  build 849

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

## ◆ any() [4/23]

template<typename _type , typename... _tParams, typename = enable_if_t<is_constructible<decay_t<_type>, _tParams...>::value>>

ystdex::any::any | ( | in_place_type_t< _type > | ,
|  | _tParams &&... | args
| ) |  |

inlineexplicit

自从
  build 851

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

## ◆ any() [5/23]

template<typename _type , typename _type2 , typename... _tParams, typename = enable_if_t<is_constructible<decay_t<_type>, std::initializer_list<_type2>&, _tParams...>::value>>

ystdex::any::any | ( | in_place_type_t< _type > | ,
|  | std::initializer_list< _type2 > | il,
|  | _tParams &&... | args
| ) |  |

inlineexplicit

自从
  build 848

注解
  YStandardEx 扩展：允许不满足 CopyConstructible 的类型的值作为参数。

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

## ◆ any() [6/23]

template<typename _tHolder , typename = enable_with_handler_params_t< is_holder_arg_t<_tHolder>, any_ops::holder_handler, empty_base<_tHolder>, std::unique_ptr<_tHolder>>>

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

inline

构造：使用指定持有者。

自从
  build 851

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

## ◆ any() [7/23]

template<typename _tHolder , typename = enable_with_handler_params_t< is_holder_arg_t<decay_t<_tHolder>>, any_ops::holder_handler, empty_base<decay_t<_tHolder>>, _tHolder>>

ystdex::any::any | ( | any_ops::use_holder_t | ,
|  | _tHolder && | h
| ) |  |

inline

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

## ◆ any() [8/23]

template<typename _tHolder , class _tAlloc , typename = enable_with_handler_params_t< is_holder_arg_t<decay_t<_tHolder>>, any_ops::allocator_holder_handler_t, empty_base<_tAlloc, decay_t<_tHolder>>, const _tAlloc&, _tHolder>>

ystdex::any::any | ( | std::allocator_arg_t | ,
|  | const _tAlloc & | a,
|  | any_ops::use_holder_t | ,
|  | _tHolder && | h
| ) |  |

inline

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

## ◆ any() [9/23]

template<typename _tHolder , typename... _tParams, typename = enable_with_handler_params_t<is_holder_arg_t<_tHolder>, any_ops::holder_handler, empty_base<_tHolder>, _tParams...>>

ystdex::any::any | ( | any_ops::use_holder_t | ,
|  | in_place_type_t< _tHolder > | ,
|  | _tParams &&... | args
| ) |  |

inline

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

## ◆ any() [10/23]

template<typename _tHolder , class _tAlloc , typename... _tParams, typename = enable_with_handler_params_t<is_holder_arg_t<_tHolder>, any_ops::allocator_holder_handler_t, empty_base<_tAlloc, _tHolder>, const _tAlloc&, _tParams...>>

ystdex::any::any | ( | std::allocator_arg_t | ,
|  | const _tAlloc & | a,
|  | any_ops::use_holder_t | ,
|  | in_place_type_t< _tHolder > | ,
|  | _tParams &&... | args
| ) |  |

inline

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

## ◆ any() [11/23]

template<typename _type , typename = exclude_tag_t<_type>, typename = enable_with_handler_t< any_ops::holder_handler<any_ops::value_holder<decay_t<_type>>>, _type>>

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

inline

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

## ◆ any() [12/23]

template<class _tAlloc , typename _type , typename = exclude_tag_t<_type>, typename = exclude_tag_t<_tAlloc>, typename = enable_with_handler_t<any_ops::allocator_holder_handler_t<_tAlloc, any_ops::value_holder<decay_t<_type>>>, const _tAlloc&, _type>>

ystdex::any::any | ( | std::allocator_arg_t | ,
|  | const _tAlloc & | a,
|  | _type && | x,
|  | any_ops::use_holder_t |
| ) |  |

inline

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

## ◆ any() [13/23]

template<class _tHandler , typename... _tParams, typename = enable_with_handler_t<_tHandler, _tParams...>>

ystdex::any::any | ( | any_ops::with_handler_t< _tHandler > | t,
|  | _tParams &&... | args
| ) |  |

inlineexplicit

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

## ◆ any() [14/23]

template<class _tHandler , class _tAlloc , typename... _tParams, typename = enable_with_handler_t<_tHandler, const _tAlloc&, _tParams...>>

ystdex::any::any | ( | std::allocator_arg_t | ,
|  | const _tAlloc & | a,
|  | any_ops::with_handler_t< _tHandler > | t,
|  | _tParams &&... | args
| ) |  |

inline

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

## ◆ any() [15/23]

template<class _tAlloc , typename... _tParams>

ystdex::any::any | ( | alloc_tag< true > | ,
|  | const _tAlloc & | ,
|  | _tParams &&... | args
| ) |  |

inlineprivate

自从
  build 848

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

## ◆ any() [16/23]

template<typename _type , class _tAlloc >

ystdex::any::any | ( | alloc_tag<> | ,
|  | const _tAlloc & | a,
|  | _type && | x
| ) |  |

inlineprivate

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

## ◆ any() [17/23]

template<typename _type , class _tAlloc , typename... _tParams>

ystdex::any::any | ( | alloc_tag<> | ,
|  | const _tAlloc & | a,
|  | in_place_type_t< _type > | ,
|  | _tParams &&... | args
| ) |  |

inlineprivate

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

## ◆ any() [18/23]

template<typename _type , typename _type2 , class _tAlloc , typename... _tParams>

ystdex::any::any | ( | alloc_tag<> | ,
|  | const _tAlloc & | a,
|  | in_place_type_t< _type > | ,
|  | std::initializer_list< _type2 > | il,
|  | _tParams &&... | args
| ) |  |

inlineprivate

自从
  build 851

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

## ◆ any() [19/23]

template<typename _tHolder , class _tAlloc >

ystdex::any::any | ( | alloc_tag<> | ,
|  | const _tAlloc & | a,
|  | any_ops::use_holder_t | ,
|  | _tHolder && | h
| ) |  |

inlineprivate

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

## ◆ any() [20/23]

template<typename _tHolder , class _tAlloc , typename... _tParams>

ystdex::any::any | ( | alloc_tag<> | ,
|  | const _tAlloc & | a,
|  | any_ops::use_holder_t | ,
|  | in_place_type_t< _tHolder > | ,
|  | _tParams &&... | args
| ) |  |

inlineprivate

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

## ◆ any() [21/23]

template<class _tAlloc , typename _type >

ystdex::any::any | ( | alloc_tag<> | ,
|  | const _tAlloc & | a,
|  | _type && | x,
|  | any_ops::use_holder_t |
| ) |  |

inlineprivate

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

## ◆ any() [22/23]

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

inline

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

引用了 ystdex::any_ops::clone , 以及 x.

## ◆ any() [23/23]

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

inline

后置条件
  YStandardEx 扩展：转移后被转移的参数值满足 !has_value() 。

注解
  YStandardEx 扩展：若存在值被转移，不从值初始化新的对象。

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

## ◆ ~any()

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

inline

自从
  build 382

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

## 成员函数说明

## ◆ do_alloc_init()

template<class _tAlloc >

void ystdex::any::do_alloc_init | ( | const _tAlloc & | a,
|  | const any & | x,
|  | any_ops::op_code | op
| ) |  |

inlineprivate

自从
  build 848

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

引用了 YSLib::a , 以及 x.

## ◆ do_alloc_init_impl()

template<class _tByteAlloc >

void ystdex::any::do_alloc_init_impl | ( | const _tByteAlloc & | a,
|  | const any & | x,
|  | any_ops::op_code | op
| ) |  |

inlineprivate

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

引用了 YSLib::a, ystdex::addressof(), ystdex::default_init, ystdex::any_ops::get_allocator_type, ystdex::throw_allocator_mismatch_error() , 以及 x.

函数调用图:

## ◆ get_holder()

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

inline

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

被这些函数引用 YSLib::ValueObject::Equals(), YSLib::ValueObject::EqualsRaw() , 以及 YSLib::ValueObject::GetHolderRef().

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

## ◆ get_object_ptr() [1/2]

template<typename _type >

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

inline

取目标指针。

返回
  若存储目标类型和模板参数相同则为指向存储对象的指针值，否则为空指针值。

异常

  异常中立：由持有者抛出。 |

自从
  build 854

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

## ◆ get_object_ptr() [2/2]

template<typename _type >

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

inline

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

## ◆ operator=() [1/3]

template<typename _type , typename = exclude_self_t<any, _type>, typename = exclude_tag_t<_type>>

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

inline

自从
  build 849

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

引用了 x , 以及 yforward.

## ◆ operator=() [2/3]

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

inline

转移赋值。

后置条件
  YStandardEx 扩展：转移后被转移的参数值满足 !has_value() 。

注解
  YStandardEx 扩展：若存在值被转移，不从值初始化新的对象。

自从
  build 332

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

引用了 YSLib::a.

## ◆ operator=() [3/3]

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

inline

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

自从
  build 332

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

引用了 YSLib::a.

## ◆ reset()

void ystdex::any::reset | ( |  | ) |

inline

自从
  build 717

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

引用了 ystdex::any_ops::destroy.

## ◆ swap()

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

inline

交换对象。

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

引用了 YSLib::a , 以及 ystdex::cpp2017::swap().

函数调用图:

## ◆ try_get_object_ptr()

template<typename _type >

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

inline

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

## ◆ type()

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

inline

自从
  build 683

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

## ◆ unchecked_get()

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

inline

取包含对象的指针。

异常

  异常中立：由持有者抛出。 |

自从
  build 853

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

引用了 NPL::get.

## ◆ unchecked_get_holder()

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

inline

取持有者指针。

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

## ◆ unchecked_type()

const type_info& ystdex::any::unchecked_type | ( |  | ) | const

inline

取包含对象的类型。

自从
  build 683

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

## 友元及相关函数文档

## ◆ swap

void swap | ( | any & | x,
|  | any & | y
| ) |  |

friend

自从
  build 848

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

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

- any.h