MSTL 1.4.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[]>
 数组特化的共享指针 更多...

函数

template<typename T, typename U>
MSTL_NODISCARD bool operator== (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 相等比较运算符
template<typename T, typename U>
MSTL_NODISCARD bool operator!= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 不等比较运算符
template<typename T, typename U>
MSTL_NODISCARD bool operator< (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 小于比较运算符(基于所有权顺序)
template<typename T, typename U>
MSTL_NODISCARD bool operator> (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 大于比较运算符
template<typename T, typename U>
MSTL_NODISCARD bool operator<= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 小于等于比较运算符
template<typename T, typename U>
MSTL_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.hpp800 行定义.

引用了 _INNER, _MSTL, allocator_traits< Alloc >::allocate(), allocator_traits< Alloc >::construct(), allocator_traits< Alloc >::deallocate(), allocator_traits< Alloc >::destroy(), forward() , 以及 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.hpp861 行定义.

引用了 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.hpp885 行定义.

引用了 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.hpp737 行定义.

引用了 _INNER, _MSTL, construct(), forward(), max() , 以及 size().

被这些函数引用 async(), 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.hpp776 行定义.

◆ reinterpret_pointer_cast()

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

重解释类型转换

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

在文件 shared_ptr.hpp873 行定义.

引用了 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.hpp849 行定义.

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