YSTest: allocator.hpp 文件参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

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

分配器接口。 更多...

`#include "placement.hpp"`
`#include "apply.hpp"`
`#include "type_op.hpp"`
`#include "pointer.hpp"`
`#include "exception.h"`
allocator.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

struct | ystdex::details::is_pair< _type >
struct | ystdex::details::is_pair< std::pair< _type1, _type2 > >
struct | ystdex::details::pair_has_allocator< _type, _tAlloc >
struct | ystdex::details::pair_has_allocator< std::pair< _type1, _type2 >, _tAlloc >
struct | ystdex::details::uaca_res< _type, _tAlloc, _tParams >
struct | ystdex::details::uaa_func< _type, _tAlloc >
struct | ystdex::details::uaca_res< _type, _tAlloc, _tParams >
struct | ystdex::details::ucua_func< _type, _tAlloc >
struct | ystdex::cpp2017::allocator_traits< _tAlloc >
struct | ystdex::is_allocatable< _type >
| 判断类型是否符合分配器要求的目标类型。 更多...
struct | ystdex::details::check_allocator_members< _type, _tPointer, _tSize, _tDifference >
struct | ystdex::details::is_allocator< _type, _tValue >
struct | ystdex::details::check_get_allocator< _type, _tAlloc >
struct | ystdex::has_mem_new< _type, _tParams >
struct | ystdex::has_mem_delete< _type, _tParams >
struct | ystdex::is_allocator< _type >
| 判断类型是分配器。 更多...
struct | ystdex::is_allocator_for< _type, _tValue >
| 判断类型是指定值类型的分配器。 更多...
struct | ystdex::is_byte_allocator< _type >
| 判断类型是 byte 分配器。 更多...
struct | ystdex::has_nested_allocator< _type >
| 判断类型具有嵌套的成员 allocator_type 指称一个构造器类型。 更多...
struct | ystdex::nested_allocator< _type, _tDefault >
| 取嵌套成员分配器类型，若不存在则使用第二模板参数指定的默认类型。 更多...
struct | ystdex::nested_allocator_base< _tCon, bool >
| 启用 allocator_type 的基类。 更多...
struct | ystdex::nested_allocator_base< _tCon, false >
struct | ystdex::has_get_allocator< _type >
| 判断类型具有返回分配器的无异常抛出的 get_allocator 成员函数。 更多...
class | ystdex::details::allocator_delete_base< _tAlloc >
class | ystdex::allocator_guard_delete< _tAlloc >
| 释放分配器分配的存储资源的删除器。 更多...
class | ystdex::allocator_delete< _tAlloc >
| 释放分配器分配的对象的删除器。 更多...
struct | ystdex::class_allocator< _type >
| 类分配器。 更多...

## 命名空间

| ystdex
| `<memory>` 特性测试宏。
| ystdex::details
| ystdex::cpp2017
| 取约束范围的值。

## 宏定义

#define | YB_Impl_Has_allocator_traits_is_always_equal false

## 类型定义

template<typename _type , class _tAlloc , typename... _tParams>
using | ystdex::details::uaca_res_t = _t< uaca_res< _type, _tAlloc, _tParams... > >
template<typename _type , typename... _tParams>
using | ystdex::details::mem_is_always_equal_t = typename _type::is_always_equal
template<class _tAlloc >
using | ystdex::alloc_value_t = typename allocator_traits< _tAlloc >::value_type
template<class _tAlloc >
using | ystdex::alloc_pointer_t = typename allocator_traits< _tAlloc >::pointer
template<class _tAlloc >
using | ystdex::alloc_const_pointer_t = typename allocator_traits< _tAlloc >::const_pointer
template<class _tAlloc >
using | ystdex::alloc_size_type_t = typename allocator_traits< _tAlloc >::size_type
template<class _tAlloc >
using | ystdex::alloc_difference_type_t = typename allocator_traits< _tAlloc >::difference_type
template<class _tAlloc , typename _type >
using | ystdex::rebind_alloc_t = typename allocator_traits< _tAlloc >::template rebind_alloc< _type >
template<class _tAlloc , typename _type >
using | ystdex::rebind_traits_t = typename allocator_traits< _tAlloc >::template rebind_traits< _type >
template<typename _type , typename... _tParams>
using | ystdex::details::mem_new_t = decltype(_type::operator new(std::declval< _tParams >()...))
template<typename _type , typename... _tParams>
using | ystdex::details::mem_delete_t = decltype(_type::operator delete(std::declval< _tParams >()...))
template<typename _type >
using | ystdex::details::is_copy_constructible_class = and_< is_copy_constructible< _type >, is_class_type< _type > >
template<class _tAlloc >
using | ystdex::details::mem_pointer_t = typename _tAlloc::pointer
template<class _tAlloc >
using | ystdex::details::mem_const_pointer_t = typename _tAlloc::const_pointer
template<class _tAlloc >
using | ystdex::details::mem_const_pointer_conv_t = is_convertible< mem_pointer_t< _tAlloc >, mem_const_pointer_t< _tAlloc > >
template<class _tAlloc >
using | ystdex::details::mem_void_pointer_t = typename _tAlloc::void_pointer
template<class _tAlloc >
using | ystdex::details::mem_void_pointer_conv_t = is_convertible< mem_pointer_t< _tAlloc >, mem_void_pointer_t< _tAlloc > >
template<class _tAlloc >
using | ystdex::details::mem_const_void_pointer_t = typename _tAlloc::const_void_pointer
template<class _tAlloc >
using | ystdex::details::mem_const_void_pointer_conv_t = and_< is_convertible< mem_pointer_t< _tAlloc >, mem_const_void_pointer_t< _tAlloc > >, is_convertible< mem_const_pointer_t< _tAlloc >, mem_const_void_pointer_t< _tAlloc > >, is_convertible< mem_void_pointer_t< _tAlloc >, mem_const_void_pointer_t< _tAlloc > >>
template<class _tAlloc >
using | ystdex::details::same_pointer_to_test_t = is_same< decltype(std::pointer_traits< mem_pointer_t< _tAlloc > >::pointer_to(*std::declval< mem_pointer_t< _tAlloc > >())), mem_pointer_t< _tAlloc > >
template<class _tAlloc >
using | ystdex::details::same_pointer_to_t = cond_or_t< is_detected< mem_pointer_t, _tAlloc >, true_, same_pointer_to_test_t, _tAlloc >
template<class _tAlloc >
using | ystdex::details::mem_allocate_t = decltype(std::declval< _tAlloc & >().allocate(size_t(0)))
template<class _tAlloc , typename _tPointer = decltype( std::declval<typename allocator_traits<_tAlloc>::const_void_pointer>())>
using | ystdex::details::ator_allocate_hint_t = decltype(allocator_traits< _tAlloc >::allocate(std::declval< _tAlloc & >(), size_t(0), std::declval< _tPointer >()))
template<class _tAlloc >
using | ystdex::details::mem_deallocate_t = decltype(std::declval< _tAlloc & >().deallocate(std::declval< mem_allocate_t< _tAlloc > >(), size_t(0)))
template<class _tAlloc >
using | ystdex::details::ator_max_size_t = decltype(allocator_traits< _tAlloc >::max_size(std::declval< _tAlloc & >()))
template<typename _type , typename _tValue >
using | ystdex::details::same_alloc_value_t = is_same< alloc_value_t< _type >, _tValue >
template<typename _type >
using | ystdex::details::nested_allocator_t = typename _type::allocator_type
template<typename _type >
using | ystdex::details::mem_get_allocator_t = decltype(std::declval< const _type & >().get_allocator())
template<class _tAlloc >
using | ystdex::allocator_guard = std::unique_ptr< alloc_value_t< _tAlloc >, allocator_guard_delete< _tAlloc > >
| 分配器守卫。 更多...
template<typename _type >
using | ystdex::local_allocator = cond_t< and_< has_mem_new< _type, size_t >, has_mem_delete< _type * > >, class_allocator< _type >, std::allocator< _type > >
| 局部分配器。 更多...

## 函数

template<typename , class _bPair , class _bPfx , class _tAlloc , typename... _tParams>
std::tuple< _tParams &&... > | ystdex::details::uses_allocator_args (_bPair, false_, _bPfx, const _tAlloc &, _tParams &&... args)
template<typename , class _tAlloc , typename... _tParams>
std::tuple< const std::allocator_arg_t &, const _tAlloc &, _tParams &&... > | ystdex::details::uses_allocator_args (false_, true_, true_, const _tAlloc &a, _tParams &&... args)
template<typename , class _tAlloc , typename... _tParams>
std::tuple< _tParams &&..., const _tAlloc & > | ystdex::details::uses_allocator_args (false_, true_, false_, const _tAlloc &a, _tParams &&... args)
template<class _type , class _tAlloc >
auto | ystdex::details::uses_allocator_args (true_, true_, false_, const _tAlloc &) -> uaca_res_t< _type, _tAlloc, const std::piecewise_construct_t &, std::tuple<>, std::tuple<>>
template<typename _type , class _tAlloc , typename _type1 , typename _type2 >
auto | ystdex::details::uses_allocator_args (true_, true_, false_, const _tAlloc &, const std::pair< _type1, _type2 > &) -> uaca_res_t< _type, _tAlloc, const std::piecewise_construct_t &, std::tuple< const _type1 & >, std::tuple< const _type2 & >>
template<typename _type , class _tAlloc , typename _type1 , typename _type2 >
auto | ystdex::details::uses_allocator_args (true_, true_, false_, const _tAlloc &a, std::pair< _type1, _type2 > &&) -> uaca_res_t< _type, _tAlloc, const std::piecewise_construct_t &, std::tuple< _type1 && >, std::tuple< _type2 && >>
template<typename _type , class _tAlloc , typename _type1 , typename _type2 >
auto | ystdex::details::uses_allocator_args (true_, true_, false_, const _tAlloc &a, _type1 &&, _type2 &&) -> uaca_res_t< _type, _tAlloc, const std::piecewise_construct_t &, std::tuple< _type1 && >, std::tuple< _type2 && >>
template<typename _type , class _tAlloc , class _tTuple1 , class _tTuple2 >
auto | ystdex::details::uses_allocator_args (true_, true_, false_, const _tAlloc &a, std::piecewise_construct_t, _tTuple1 &&x, _tTuple2 &&y) -> decltype(std::make_tuple(std::piecewise_construct, ystdex::apply(uaa_func< remove_cv_t< typename _type::first_type >, _tAlloc >
template<typename _type , class _tAlloc , typename... _tParams>
auto | ystdex::uses_allocator_construction_args (const _tAlloc &a, _tParams &&... args) -> decltype(details::uses_allocator_args< _type >(details::is_pair< _type >(), details::pair_has_allocator< _type, _tAlloc >(), is_constructible< _type, std::allocator_arg_t, _tAlloc, _tParams... >(), a, std::forward< _tParams && >(args)...))
template<typename _type , class _tAlloc , typename... _tParams>
_type | ystdex::make_obj_using_allocator (const _tAlloc &a, _tParams &&... args)
template<typename _type , class _tAlloc , typename... _tParams>
_type * | ystdex::uninitialized_construct_using_allocator (_type *p, const _tAlloc &a, _tParams &&... args)
template<typename _tAlloc >
void | ystdex::details::do_alloc_on_copy (_tAlloc &, const _tAlloc &, false_)
template<typename _tAlloc >
void | ystdex::details::do_alloc_on_copy (_tAlloc &x, const _tAlloc &y, true_)
template<typename _tAlloc >
void | ystdex::details::do_alloc_on_move (_tAlloc &, _tAlloc &, false_)
template<typename _tAlloc >
void | ystdex::details::do_alloc_on_move (_tAlloc &x, _tAlloc &y, true_)
template<typename _tAlloc >
void | ystdex::details::do_alloc_on_swap (_tAlloc &, _tAlloc &, false_)
template<typename _tAlloc >
void | ystdex::details::do_alloc_on_swap (_tAlloc &x, _tAlloc &y, true_)
template<class _tAlloc >
allocator_guard< _tAlloc > | ystdex::make_allocator_guard (_tAlloc &a, typename allocator_traits< _tAlloc >::size_type n=1)
| 构造分配器守卫。 更多...
template<typename _type , class _tAlloc , typename... _tParams>
auto | ystdex::create_with_allocator (_tAlloc &&a, _tParams &&... args) -> std::unique_ptr< _type, allocator_delete< remove_cvref_t< _tAlloc >>>
| 使用分配器创建对象。 更多...
template<typename _type , class _tAlloc , typename... _tParams>
auto | ystdex::allocate_unique (const _tAlloc &alloc, _tParams &&... args) -> std::unique_ptr< _type, allocator_delete< rebind_alloc_t< _tAlloc, _type >>>
| 使用分配器创建 std::unique_ptr 。 更多...
template<typename _type , class _tAlloc , typename _tValue >
auto | ystdex::allocate_unique (const _tAlloc &alloc, std::initializer_list< _tValue > il) -> std::unique_ptr< _type, allocator_delete< rebind_alloc_t< _tAlloc, _type >>>
| 使用分配器和初始化列表参数创建 std::unique_ptr 。 更多...
template<typename _type , class _tAlloc , typename... _tParams>
std::shared_ptr< _type > | ystdex::allocate_shared (const _tAlloc &alloc, _tParams &&... args)
| 使用分配器创建 std::shared_ptr 。 更多...
template<typename _type , class _tAlloc , typename _tValue >
std::shared_ptr< _type > | ystdex::allocate_shared (const _tAlloc &alloc, std::initializer_list< _tValue > il)
| 使用分配器和初始化列表参数创建 std::shared_ptr 。 更多...
template<typename _tAlloc >
void | ystdex::alloc_on_copy (_tAlloc &x, const _tAlloc &y)
| 按分配器特征在传播容器时复制赋值分配器。 更多...
template<typename _tAlloc >
_tAlloc | ystdex::alloc_on_copy (const _tAlloc &a)
| 按分配器特征在传播容器时复制分配器。 更多...
template<typename _tAlloc >
void | ystdex::alloc_on_move (_tAlloc &x, _tAlloc &y)
| 按分配器特征在传播容器时转移分配器。 更多...
template<typename _tAlloc >
void | ystdex::alloc_on_swap (_tAlloc &x, _tAlloc &y)
| 按分配器特征在传播容器时交换分配器。 更多...

## 详细描述

分配器接口。

版本
  r5613

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

自从
  build 882

创建时间:
  2020-02-10 21:34:28 +0800

修改时间:
  2020-04-06 15:02 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::Allocator

扩展标准库头 `<memory>` ，提供对分配器使用相关的接口。

在文件 allocator.hpp 中定义.

## 宏定义说明

## ◆ YB_Impl_Has_allocator_traits_is_always_equal

#define YB_Impl_Has_allocator_traits_is_always_equal false

自从
  build 830

在文件 allocator.hpp 第 78 行定义.