YSTest: placement.hpp 文件参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

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

放置对象管理操作。 更多...

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

浏览源代码.

## 类

struct | ystdex::default_init_t
| 默认初始化标记。 更多...
struct | ystdex::value_init_t
| 值初始化标记。 更多...
struct | ystdex::uniformed_tags::in_place_tag
| 原地标记类型。 更多...
struct | ystdex::in_place_index_ctor< _type >
struct | ystdex::vseq::ctor_of< in_place_type_t< _type >, when< true > >
struct | ystdex::vseq::ctor_of< in_place_index_t< _vIdx >, when< true > >
class | ystdex::default_init_allocator< _type, _tAlloc >
| 默认初始化构造分配器。 更多...
struct | ystdex::default_init_allocator< _type, _tAlloc >::rebind< _tOther >
struct | ystdex::placement_delete< _type, _tPointer >
| 放置存储的对象删除器：释放时调用伪析构函数。 更多...
struct | ystdex::tagged_value< _tToken, _type >
| 带记号标记的可选值。 更多...

## 命名空间

| ystdex
| `<memory>` 特性测试宏。
| ystdex::uniformed_tags
| 对非模板和不同模板参数相同的类型标签接口。
| ystdex::cpp2017
| 取约束范围的值。
| ystdex::vseq

## 宏定义

#define | yaligned(_p, _align) (yassume(ystdex::is_aligned_ptr(_p, _align)), _p)
| 假定指定指针值按指定对齐值对齐。 更多...
#define | YB_Impl_UninitGuard_Begin
#define | YB_Impl_UninitGuard_End

## 类型定义

using | ystdex::uniformed_tags::in_place_t = in_place_tag(*)(empty_base<>)
| 原地空标记类型。 更多...
template<typename _type >
using | ystdex::uniformed_tags::in_place_type_t = in_place_tag(*)(empty_base< _type >)
| 原地类型标记模板。 更多...
template<size_t _vIdx>
using | ystdex::uniformed_tags::in_place_index_t = in_place_tag(*)(size_t_< _vIdx >)
| 原地索引标记模板。 更多...
template<typename _type , typename _tPointer = _type*>
using | ystdex::placement_ptr = std::unique_ptr< _type, placement_delete< _type, _tPointer > >
| 独占放置存储的对象所有权的指针。 更多...

## 函数

template<typename _type >
bool | ystdex::is_aligned_ptr (_type *p, size_t alignment=std::alignment_of< cond_t< is_void< _type > >::value std::max_align_t, _type >))
| 返回参数指定的指针值对齐到指定的对齐值。 更多...
template<typename _type >
in_place_tag | ystdex::uniformed_tags::in_place (empty_base< _type >)
template<size_t _vIdx>
in_place_tag | ystdex::uniformed_tags::in_place (size_t_< _vIdx >)
template<typename _type , typename _tObj >
_type * | ystdex::construct_default_within (_tObj &obj)
| 以默认初始化在对象中构造。 更多...
template<typename _type , typename _tObj , typename... _tParams>
_type * | ystdex::construct_within (_tObj &obj, _tParams &&... args)
| 以值初始化在对象中构造。 更多...
template<typename _type >
void | ystdex::construct_default_in (_type &obj)
| 以默认初始化原地构造。 更多...
template<typename _type , typename... _tParams>
void | ystdex::construct_in (_type &obj, _tParams &&... args)
| 以值初始化原地构造。 更多...
template<typename _tIter , typename... _tParams>
void | ystdex::construct (_tIter i, _tParams &&... args)
| 使用指定参数在迭代器指定的位置以指定参数初始化构造对象。 更多...
template<typename _tIter >
void | ystdex::construct_default (_tIter i)
| 使用指定参数在迭代器指定的位置以默认初始化构造对象。 更多...
template<typename _tIter , typename... _tParams>
void | ystdex::construct_range (_tIter first, _tIter last, _tParams &&... args)
| 使用指定的参数重复构造迭代器范围内的对象序列。 更多...
template<typename _type >
void | ystdex::cpp2017::destroy_at (_type *location)
| 原地销毁。 更多...
template<typename _tFwd >
void | ystdex::cpp2017::destroy (_tFwd first, _tFwd last)
template<typename _tFwd , typename _tSize >
_tFwd | ystdex::cpp2017::destroy_n (_tFwd first, _tSize n)
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 _tFwd >
void | ystdex::cpp2017::uninitialized_default_construct (_tFwd first, _tFwd last)
template<typename _tFwd , typename _tSize >
_tFwd | ystdex::cpp2017::uninitialized_default_construct_n (_tFwd first, _tSize n)
template<typename _tFwd >
void | ystdex::cpp2017::uninitialized_value_construct (_tFwd first, _tFwd last)
template<typename _tFwd , typename _tSize >
_tFwd | ystdex::cpp2017::uninitialized_value_construct_n (_tFwd first, _tSize n)
template<typename _tIn , class _tFwd >
_tFwd | ystdex::cpp2017::uninitialized_move (_tIn first, _tIn last, _tFwd result)
| 转移初始化范围。 更多...
template<typename _tIn , typename _tSize , class _tFwd >
std::pair< _tIn, _tFwd > | ystdex::cpp2017::uninitialized_move_n (_tIn first, _tSize n, _tFwd result)
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)

## 变量

const struct ystdex::default_init_t | ystdex::default_init
const struct ystdex::value_init_t | ystdex::value_init
in_place_tag | ystdex::uniformed_tags::in_place (empty_base<>)
| 原地标记函数。 更多...
template<typename _type >
uniformed_tags::in_place_tag | ystdex::cpp2017::in_place_type (empty_base< _type >)
template<size_t _vIdx>
uniformed_tags::in_place_tag | ystdex::cpp2017::in_place_index (size_t_< _vIdx >)

## 详细描述

放置对象管理操作。

版本
  r920

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

自从
  build 715

创建时间:
  2016-08-03 18:56:31 +0800

修改时间:
  2020-03-12 17:44 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::Placement

提供放置对象分配和释放操作，包括 WG21 P0040R3 提议和 ISO C++17 兼容的标签接口。

在文件 placement.hpp 中定义.

## 宏定义说明

## ◆ YB_Impl_UninitGuard_Begin

#define YB_Impl_UninitGuard_Begin

值:
auto i = first; \
\
try \
{

在文件 placement.hpp 第 534 行定义.

## ◆ YB_Impl_UninitGuard_End

#define YB_Impl_UninitGuard_End

值:
} \
catch(...) \
{ \
ystdex::destruct_range(first, i); \
throw; \
}

在文件 placement.hpp 第 541 行定义.

ystdex::destruct_range
void destruct_range(_tIter first, _tIter last)
析构d迭代器范围内的对象序列。
Definition: placement.hpp:521
YSLib::i
return i
Definition: YCoreUtilities.h:177