YSTest: memory.hpp 文件参考

YSTest PreAlpha_b700_20160611 The YSLib Test Project

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

- 文件列表
- 文件成员

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

存储和智能指针特性。 更多...

`#include "addressof.hpp"`
`#include "type_op.hpp"`
`#include <iterator>`
`#include "cassert.h"`
`#include "deref_op.hpp"`
`#include <new>`
`#include "operators.hpp"`
memory.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

struct | ystdex::details::pack_obj_impl< _type >
struct | ystdex::details::pack_obj_impl< std::unique_ptr< _type, _tDeleter > >
struct | ystdex::details::pack_obj_impl< std::shared_ptr< _type > >
struct | ystdex::is_allocatable< _type >
| 判断类型是否符合分配器要求的目标类型。 更多...
struct | ystdex::has_nested_allocator< _type >
| 判断类型具有嵌套的成员 allocator_type 指称一个可复制构造的类类型。 更多...
struct | ystdex::nested_allocator< _type, _tDefault >
| 取嵌套成员分配器类型，若不存在则使用第二模板参数指定的默认类型。 更多...
struct | ystdex::free_delete< _type >
| 使用显式析构函数调用和 std::free 的删除器。 更多...
struct | ystdex::free_delete< _type[]>
struct | ystdex::temporary_buffer_delete< typename >
| 使用显式 std::return_temporary_buffer 的删除器。 更多...
struct | ystdex::temporary_buffer_delete< _type[]>
class | ystdex::temporary_buffer< _type >
| 临时缓冲区。 更多...
class | ystdex::allocator_delete< _tAlloc >
| 释放分配器的删除器。 更多...
class | ystdex::observer_ptr< _type >
| 观察者指针：无所有权的智能指针。 更多...
struct | ystdex::object_pack< _type, _tPack >
| 打包的对象：使用 pack_object 得到的对象包装。 更多...
struct | std::hash< typename >
| ystdex::observer_ptr 散列支持。 更多...
struct | std::hash< ystdex::observer_ptr< _type > >

## 命名空间

| ystdex
| <functional> 特性测试宏。
| ystdex::details
| ystdex::cpp2014
| 包含 ISO C++ 2014 引入的名称的命名空间。
| std

## 类型定义

template<typename _type >
using | ystdex::details::is_copy_constructible_class = and_< is_copy_constructible< _type >, is_class_type< _type >>
template<class _tAlloc , typename _type >
using | ystdex::details::rebind_t = typename _tAlloc::template rebind< _type >::other
template<typename _type >
using | ystdex::details::check_allocator = and_< cond_t< has_mem_value_type< _type >, is_detected< rebind_t, _type, vdefer< details::mem_value_type_t, _type >>>, is_copy_constructible_class< _type >>
template<typename _type >
using | ystdex::details::nested_allocator_t = typename _type::allocator_type
template<class _tDeleter >
using | ystdex::deleter_member_pointer_t = typename remove_reference_t< _tDeleter >::pointer
| 取删除器的 `pointer` 成员类型。 更多...
template<typename _type , class _tDeleter >
using | ystdex::unique_ptr_pointer = detected_or_t< _type *, deleter_member_pointer_t, _tDeleter >
| 取 unique_ptr 包装的指针类型。 更多...
template<typename _tPointer , typename _tDefault = void>
using | ystdex::defer_element = cond_t< is_void< remove_pointer_t< _tPointer >>, _tDefault, vdefer< indirect_element_t, _tPointer >>
| 取指针对应的元素类型。 更多...

## 函数

template<typename _type , typename... _tParams>
void | ystdex::construct_in (_type &obj, _tParams &&...args)
| 原地构造。 更多...
template<typename _type >
void | ystdex::destruct_in (_type &obj)
| 原地析构。 更多...
template<typename _tIter >
void | ystdex::destruct (_tIter i)
| 析构迭代器指向的对象。 更多...
template<typename _tIter >
void | ystdex::destruct_range (_tIter first, _tIter last)
| 析构d迭代器范围内的对象序列。 更多...
template<typename _type >
_type * | ystdex::get_raw (_type *const &p)
template<typename _type , typename _fDeleter >
auto | ystdex::get_raw (const std::unique_ptr< _type, _fDeleter > &p) -> decltype(p.get())
template<typename _type >
_type * | ystdex::get_raw (const std::shared_ptr< _type > &p)
template<typename _type >
_type * | ystdex::get_raw (const std::weak_ptr< _type > &p)
template<typename _type >
bool | ystdex::reset (std::unique_ptr< _type > &p)
template<typename _type >
bool | ystdex::reset (std::shared_ptr< _type > &p)
template<typename _type , typename _pSrc >
std::unique_ptr< _type > | ystdex::unique_raw (_pSrc *p)
template<typename _type >
std::unique_ptr< _type > | ystdex::unique_raw (_type *p)
template<typename _type , typename _tDeleter , typename _pSrc >
std::unique_ptr< _type, _tDeleter > | ystdex::unique_raw (_pSrc *p, _tDeleter &&d)
template<typename _type , typename _tDeleter >
std::unique_ptr< _type, _tDeleter > | ystdex::unique_raw (_type *p, _tDeleter &&d)
template<typename _type >
std::unique_ptr< _type > | ystdex::unique_raw (nullptr_t)
template<typename _type , typename... _tParams>
std::shared_ptr< _type > | ystdex::share_raw (_type *p, _tParams &&...args)
template<typename _type , typename _pSrc , typename... _tParams>
std::shared_ptr< _type > | ystdex::share_raw (_pSrc &&p, _tParams &&...args)
template<typename _type >
std::shared_ptr< _type > | ystdex::share_raw (nullptr_t)
template<typename _type , class... _tParams>
enable_if_t< sizeof...(_tParams)!=0, std::shared_ptr< _type > > | ystdex::share_raw (nullptr_t, _tParams &&...args)
template<typename _type , typename _tValue >
std::unique_ptr< _type > | ystdex::make_unique (std::initializer_list< _tValue > il)
| 使用指定类型的初始化列表构造指定类型的 std::unique_ptr 对象。 更多...
template<typename _type , typename _tValue >
std::shared_ptr< _type > | ystdex::make_shared (std::initializer_list< _tValue > il)
| 使用指定类型的初始化列表构造指定类型的 std::shared_ptr 对象。 更多...
template<typename _tAlloc >
std::unique_ptr< _tAlloc, allocator_delete< _tAlloc > > | ystdex::make_allocator_guard (_tAlloc &alloc, typename std::allocator_traits< _tAlloc >::size_type n=1)
| 构造分配器守护。 更多...
template<typename _type >
void | ystdex::swap (observer_ptr< _type > &p1, observer_ptr< _type > &p2)
template<typename _type >
observer_ptr< _type > | ystdex::make_observer (_type *p)
template<typename _tIter , typename... _tParams>
void | ystdex::construct (_tIter i, _tParams &&...args)
| 使用指定参数在迭代器指定的位置构造对象。 更多...
template<typename _tIter , typename... _tParams>
void | ystdex::construct_range (_tIter first, _tIter last, _tParams &&...args)
| 使用指定的参数重复构造迭代器范围内的对象序列。 更多...
template<typename _tFwd , typename... _tParams>
void | ystdex::uninitialized_construct (_tFwd first, _tFwd last, _tParams &&...args)
| 在迭代器指定的未初始化的范围上构造对象。 更多...
template<typename _tFwd , typename _tSize , typename... _tParams>
void | ystdex::uninitialized_construct_n (_tFwd first, _tSize n, _tParams &&...args)
template<typename _type , class _tAlloc = std::allocator<indirect_element_t<_type>>>
auto | ystdex::clone_monomorphic (const _type &p, _tAlloc &&a=_tAlloc()) -> decltype(std::addressof(*p))
| 使用分配器复制指定指针指向的对象。 更多...
template<class _type >
auto | ystdex::clone_polymorphic (const _type &p) -> decltype(std::addressof(*p))
| 使用 `clone` 成员函数复制指定指针指向的多态类类型对象。 更多...
template<typename _type , typename... _tParams>
enable_if_t<!is_array< _type >::value, std::unique_ptr< _type > > | ystdex::cpp2014::make_unique (_tParams &&...args)
| 使用 new 和指定参数构造指定类型的 std::unique_ptr 对象。 更多...
template<typename _type , typename... _tParams>
enable_if_t< is_array< _type >::value &&extent< _type >::value==0, std::unique_ptr< _type > > | ystdex::cpp2014::make_unique (size_t size)
template<typename _type , typename... _tParams>
enable_if_t< extent< _type >::value!=0 > | ystdex::cpp2014::make_unique (_tParams &&...)=delete
template<typename _type , typename... _tParams>
enable_if_t<!is_array< _type >::value, std::unique_ptr< _type > > | ystdex::make_unique_default_init ()
template<typename _type , typename... _tParams>
enable_if_t< is_array< _type >::value &&extent< _type >::value==0, std::unique_ptr< _type > > | ystdex::make_unique_default_init (size_t size)
template<typename _type , typename... _tParams>
enable_if_t< extent< _type >::value!=0 > | ystdex::make_unique_default_init (_tParams &&...)=delete
template<typename _type , typename _tDeleter , typename... _tParams>
enable_if_t<!is_array< _type >::value, std::unique_ptr< _type > > | ystdex::make_unique_with (_tDeleter &&d)
template<typename _type , typename _tDeleter , typename... _tParams>
enable_if_t< is_array< _type >::value &&extent< _type >::value==0, std::unique_ptr< _type > > | ystdex::make_unique_with (_tDeleter &&d, size_t size)
template<typename _type , typename _tDeleter , typename... _tParams>
enable_if_t< extent< _type >::value!=0 > | ystdex::make_unique_with (_tDeleter &&, _tParams &&...)=delete
template<typename _tDst , typename _type >
std::unique_ptr< _tDst > | ystdex::static_pointer_cast (std::unique_ptr< _type > p)
| 智能指针转换。 更多...
template<typename _tDst , typename _type , typename _tDeleter >
std::unique_ptr< _tDst, _tDeleter > | ystdex::static_pointer_cast (std::unique_ptr< _type, _tDeleter > p)
template<typename _tDst , typename _type >
std::unique_ptr< _tDst > | ystdex::dynamic_pointer_cast (std::unique_ptr< _type > &p)
template<typename _tDst , typename _type >
std::unique_ptr< _tDst > | ystdex::dynamic_pointer_cast (std::unique_ptr< _type > &&p)
template<typename _tDst , typename _type , typename _tDeleter >
std::unique_ptr< _tDst, _tDeleter > | ystdex::dynamic_pointer_cast (std::unique_ptr< _type, _tDeleter > &p)
template<typename _tDst , typename _type , typename _tDeleter >
std::unique_ptr< _tDst, _tDeleter > | ystdex::dynamic_pointer_cast (std::unique_ptr< _type, _tDeleter > &&p)
template<typename _tDst , typename _type >
std::unique_ptr< _tDst > | ystdex::const_pointer_cast (std::unique_ptr< _type > p)
template<typename _tDst , typename _type , typename _tDeleter >
std::unique_ptr< _tDst, _tDeleter > | ystdex::const_pointer_cast (std::unique_ptr< _type, _tDeleter > p)
template<typename _type1 , typename _type2 >
bool | ystdex::operator== (observer_ptr< _type1 > p1, observer_ptr< _type2 > p2)
template<typename _type1 , typename _type2 >
bool | ystdex::operator!= (observer_ptr< _type1 > p1, observer_ptr< _type2 > p2)
template<typename _type1 , typename _type2 >
bool | ystdex::operator< (observer_ptr< _type1 > p1, observer_ptr< _type2 > p2)
template<typename _type , typename... _tParams>
auto | ystdex::pack_object (_tParams &&...args) -> decltype(details::pack_obj_impl< _type >::pack(std::forward< decltype(args)>(args)...))
| 打包对象：通过指定参数构造对象。 更多...

## 详细描述

存储和智能指针特性。

版本
  r1729

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

自从
  build 209

创建时间:
  2011-05-14 12:25:13 +0800

修改时间:
  2016-05-11 19:17 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::Memory

扩展标准库头 <memory> ，提供对智能指针类型的操作及判断迭代器不可解引用的模板。

在文件 memory.hpp 中定义.