NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
共享智能指针

共享智能指针类和辅助工具 更多...

共享智能指针 的协作图:

struct  enable_shared_from_this< T >
 启用从this创建共享指针的基类 更多...
class  shared_ptr< T >
 共享智能指针类模板 更多...
class  weak_ptr< T >
 弱智能指针类模板 更多...
class  shared_ptr< T[]>
 数组特化的共享指针 更多...
struct  is_shared_ptr< T >
 类型特征:是否为shared_ptr 更多...

函数

template<typename T, typename U>
NEFORCE_NODISCARD bool operator== (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 相等比较运算符
template<typename T, typename U>
NEFORCE_NODISCARD bool operator!= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 不等比较运算符
template<typename T, typename U>
NEFORCE_NODISCARD bool operator< (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 小于比较运算符(基于所有权顺序)
template<typename T, typename U>
NEFORCE_NODISCARD bool operator> (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 大于比较运算符
template<typename T, typename U>
NEFORCE_NODISCARD bool operator<= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 小于等于比较运算符
template<typename T, typename U>
NEFORCE_NODISCARD bool operator>= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 大于等于比较运算符
template<typename T, typename... Args>
enable_if_t<!is_unbounded_array_v< T > &&is_constructible_v< T, Args... >, shared_ptr< T > > make_shared (Args &&... args)
 融合分配创建共享指针
template<typename T>
enable_if_t< is_unbounded_array_v< T >, shared_ptr< T > > make_shared (const size_t len)
 创建动态数组的共享指针
template<typename T, typename Alloc, typename... Args>
enable_if_t<!is_array_v< T > &&is_constructible_v< T, Args... >, shared_ptr< T > > allocate_shared (Alloc &alloc, Args &&... args)
 使用分配器创建共享指针
template<typename T, typename U>
shared_ptr< T > static_pointer_cast (const shared_ptr< U > &ptr)
 静态类型转换
template<typename T, typename U>
shared_ptr< T > const_pointer_cast (const shared_ptr< U > &ptr)
 CV类型转换
template<typename T, typename U>
shared_ptr< T > reinterpret_pointer_cast (const shared_ptr< U > &ptr)
 重解释类型转换
template<typename T, typename U>
shared_ptr< T > dynamic_pointer_cast (const shared_ptr< U > &ptr)
 动态类型转换

详细描述

共享智能指针类和辅助工具

函数说明

◆ allocate_shared()

template<typename T, typename Alloc, typename... Args>
enable_if_t<!is_array_v< T > &&is_constructible_v< T, Args... >, shared_ptr< T > > allocate_shared ( Alloc & alloc,
Args &&... args )

使用分配器创建共享指针

模板参数
T对象类型
Alloc分配器类型
Args参数类型
参数
alloc分配器
args构造参数
返回
共享指针
异常
memory_exception如果构造对象或控制块时抛出错误

使用自定义分配器分配控制块和对象的内存。

在文件 shared_ptr.hpp853 行定义.

引用了 allocator_traits< Alloc >::allocate(), allocator_traits< Alloc >::construct(), construct(), allocator_traits< Alloc >::deallocate(), allocator_traits< Alloc >::destroy(), forward(), is_constructible_v , 以及 max().

◆ const_pointer_cast()

template<typename T, typename U>
shared_ptr< T > const_pointer_cast ( const shared_ptr< U > & ptr)

CV类型转换

模板参数
T目标类型
U源类型
参数
ptr源共享指针
返回
转换后的共享指针

在文件 shared_ptr.hpp916 行定义.

引用了 shared_ptr< T >::get().

◆ dynamic_pointer_cast()

template<typename T, typename U>
shared_ptr< T > dynamic_pointer_cast ( const shared_ptr< U > & ptr)

动态类型转换

模板参数
T目标类型
U源类型
参数
ptr源共享指针
返回
转换后的共享指针

在文件 shared_ptr.hpp940 行定义.

引用了 shared_ptr< T >::get().

◆ make_shared() [1/2]

template<typename T, typename... Args>
enable_if_t<!is_unbounded_array_v< T > &&is_constructible_v< T, Args... >, shared_ptr< T > > make_shared ( Args &&... args)

融合分配创建共享指针

模板参数
T对象类型
Args参数类型
参数
args构造参数
返回
共享指针
异常
memory_exception如果构造对象时抛出错误

在单块内存中同时分配控制块和对象,提高内存局部性和性能。

在文件 shared_ptr.hpp789 行定义.

引用了 construct(), forward(), is_constructible_v, is_nothrow_destructible_v, max(), move() , 以及 size().

被这些函数引用 async(), connection::connection(), get_current_task_group(), path_tree::path_tree(), promise< Res >::promise(), promise< Res & >::promise() , 以及 promise< void >::promise().

◆ make_shared() [2/2]

template<typename T>
enable_if_t< is_unbounded_array_v< T >, shared_ptr< T > > make_shared ( const size_t len)

创建动态数组的共享指针

模板参数
T数组类型
参数
len数组长度
返回
共享指针
异常
memory_exception如果构造对象时抛出错误

在文件 shared_ptr.hpp827 行定义.

引用了 unreachable().

◆ reinterpret_pointer_cast()

template<typename T, typename U>
shared_ptr< T > reinterpret_pointer_cast ( const shared_ptr< U > & ptr)

重解释类型转换

模板参数
T目标类型
U源类型
参数
ptr源共享指针
返回
转换后的共享指针

在文件 shared_ptr.hpp928 行定义.

引用了 shared_ptr< T >::get().

◆ static_pointer_cast()

template<typename T, typename U>
shared_ptr< T > static_pointer_cast ( const shared_ptr< U > & ptr)

静态类型转换

模板参数
T目标类型
U源类型
参数
ptr源共享指针
返回
转换后的共享指针

在文件 shared_ptr.hpp904 行定义.

引用了 shared_ptr< T >::get().