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>
bool operator== (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 相等比较运算符
template<typename T, typename U>
bool operator!= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 不等比较运算符
template<typename T, typename U>
bool operator< (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 小于比较运算符(基于所有权顺序)
template<typename T, typename U>
bool operator> (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 大于比较运算符
template<typename T, typename U>
bool operator<= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 小于等于比较运算符
template<typename T, typename U>
bool operator>= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 大于等于比较运算符
template<typename T>
bool operator== (const shared_ptr< T > &lhs, nullptr_t np) noexcept
 与nullptr相等比较
template<typename T>
bool operator== (nullptr_t np, const shared_ptr< T > &rhs) noexcept
 nullptr与共享指针相等比较
template<typename T>
bool operator!= (const shared_ptr< T > &lhs, nullptr_t np) noexcept
 与nullptr不等比较
template<typename T>
bool operator!= (nullptr_t np, const shared_ptr< T > &rhs) noexcept
 nullptr与共享指针不等比较
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.hpp899 行定义.

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

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

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

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

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

◆ 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.hpp873 行定义.

引用了 unreachable().

◆ operator!=() [1/2]

template<typename T>
bool operator!= ( const shared_ptr< T > & lhs,
nullptr_t np )
nodiscardnoexcept

与nullptr不等比较

参数
lhs左侧共享指针
np空指针字面量
返回
是否不为空

在文件 shared_ptr.hpp716 行定义.

◆ operator!=() [2/2]

template<typename T>
bool operator!= ( nullptr_t np,
const shared_ptr< T > & rhs )
nodiscardnoexcept

nullptr与共享指针不等比较

参数
np空指针字面量
rhs右侧共享指针
返回
是否不为空

在文件 shared_ptr.hpp727 行定义.

◆ operator==() [1/2]

template<typename T>
bool operator== ( const shared_ptr< T > & lhs,
nullptr_t np )
nodiscardnoexcept

与nullptr相等比较

参数
lhs左侧共享指针
np空指针字面量
返回
是否为空

在文件 shared_ptr.hpp694 行定义.

◆ operator==() [2/2]

template<typename T>
bool operator== ( nullptr_t np,
const shared_ptr< T > & rhs )
nodiscardnoexcept

nullptr与共享指针相等比较

参数
np空指针字面量
rhs右侧共享指针
返回
是否为空

在文件 shared_ptr.hpp705 行定义.

◆ reinterpret_pointer_cast()

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

重解释类型转换

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

在文件 shared_ptr.hpp974 行定义.

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

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