MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
独占智能指针

独占智能指针类和辅助工具 更多...

struct  default_delete< T >
 默认删除器 更多...
struct  default_delete< T[]>
 数组特化的默认删除器 更多...
class  unique_ptr< T, Deleter >
 独占智能指针 更多...
class  unique_ptr< T[], Deleter >
 数组特化的unique_ptr 更多...
struct  hash< unique_ptr< T, Deleter > >
 unique_ptr的哈希特化 更多...

函数

template<typename T, typename Deleter, enable_if_t< is_swappable< Deleter >::value &&is_swappable< T >::value, int > = 0>
void swap (unique_ptr< T, Deleter > &lhs, unique_ptr< T, Deleter > &rhs) noexcept
 交换两个unique_ptr
template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator== (const unique_ptr< T, D > &lhs, const unique_ptr< U, E > &rhs)
 相等比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator== (const unique_ptr< T, D > &lhs, nullptr_t)
 与nullptr的相等比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator== (nullptr_t, const unique_ptr< T, D > &rhs)
 nullptr与unique_ptr的相等比较运算符
template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator!= (const unique_ptr< T, D > &lhs, const unique_ptr< U, E > &rhs)
 不等比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator!= (const unique_ptr< T, D > &lhs, nullptr_t)
 与nullptr的不等比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator!= (nullptr_t, const unique_ptr< T, D > &rhs)
 nullptr与unique_ptr的不等比较运算符
template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator< (const unique_ptr< T, D > &lhs, const unique_ptr< U, E > &rhs)
 小于比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator< (const unique_ptr< T, D > &lhs, nullptr_t)
 与nullptr的小于比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator< (nullptr_t, const unique_ptr< T, D > &rhs)
 nullptr与unique_ptr的小于比较运算符
template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator> (const unique_ptr< T, D > &lhs, const unique_ptr< U, E > &rhs)
 大于比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator> (const unique_ptr< T, D > &lhs, nullptr_t)
 与nullptr的大于比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator> (nullptr_t, const unique_ptr< T, D > &rhs)
 nullptr与unique_ptr的大于比较运算符
template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator<= (const unique_ptr< T, D > &lhs, const unique_ptr< U, E > &rhs)
 小于等于比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator<= (const unique_ptr< T, D > &lhs, nullptr_t)
 与nullptr的小于等于比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator<= (nullptr_t, const unique_ptr< T, D > &rhs)
 nullptr与unique_ptr的小于等于比较运算符
template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator>= (const unique_ptr< T, D > &lhs, const unique_ptr< U, E > &rhs)
 大于等于比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator>= (const unique_ptr< T, D > &lhs, nullptr_t)
 与nullptr的大于等于比较运算符
template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator>= (nullptr_t, const unique_ptr< T, D > &rhs)
 nullptr与unique_ptr的大于等于比较运算符
template<typename T, typename U>
unique_ptr< T > static_pointer_cast (const unique_ptr< U > &ptr)=delete
 禁止的static_pointer_cast
template<typename T, typename U>
unique_ptr< T > const_pointer_cast (const unique_ptr< U > &ptr)=delete
 禁止的const_pointer_cast
template<typename T, typename U>
unique_ptr< T > reinterpret_pointer_cast (const unique_ptr< U > &ptr)=delete
 禁止的reinterpret_pointer_cast
template<typename T, typename U>
unique_ptr< T > dynamic_pointer_cast (const unique_ptr< U > &ptr)=delete
 禁止的dynamic_pointer_cast
template<typename T, typename U>
MSTL_CONSTEXPR20 unique_ptr< T > static_pointer_cast (unique_ptr< U > &&ptr)
 static_pointer_cast
template<typename T, typename U>
MSTL_CONSTEXPR20 unique_ptr< T > const_pointer_cast (unique_ptr< U > &&ptr)
 const_pointer_cast
template<typename T, typename U>
unique_ptr< T > reinterpret_pointer_cast (unique_ptr< U > &&ptr)
 const_pointer_cast
template<typename T, typename U>
unique_ptr< T > dynamic_pointer_cast (unique_ptr< U > &&ptr)
 reinterpret_pointer_cast
template<typename T, typename... Args, enable_if_t<!is_array< T >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr< T > make_unique (Args &&... args)
 创建unique_ptr
template<typename T, enable_if_t< is_unbounded_array< T >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr< T > make_unique (const size_t len)
 创建unique_ptr
template<typename T, typename... Args, enable_if_t< is_bounded_array< T >::value, int > = 0>
unique_ptr< T > make_unique (Args &&...)=delete
 禁止创建已知边界数组的make_unique

详细描述

独占智能指针类和辅助工具

函数说明

◆ const_pointer_cast() [1/2]

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

禁止的const_pointer_cast

模板参数
T目标类型
U源类型
参数
ptr源unique_ptr
注解
由于unique_ptr是独占所有权,不能从const引用转换

◆ const_pointer_cast() [2/2]

template<typename T, typename U>
MSTL_CONSTEXPR20 unique_ptr< T > const_pointer_cast ( unique_ptr< U > && ptr)

const_pointer_cast

模板参数
T目标类型
U源类型
参数
ptr源unique_ptr
返回
转换后的unique_ptr

在文件 unique_ptr.hpp951 行定义.

◆ dynamic_pointer_cast() [1/2]

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

禁止的dynamic_pointer_cast

模板参数
T目标类型
U源类型
参数
ptr源unique_ptr
注解
由于unique_ptr是独占所有权,不能从const引用转换

◆ dynamic_pointer_cast() [2/2]

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

reinterpret_pointer_cast

模板参数
T目标类型
U源类型
参数
ptr源unique_ptr
返回
转换后的unique_ptr

在文件 unique_ptr.hpp975 行定义.

引用了 _MSTL , 以及 move().

◆ make_unique() [1/3]

template<typename T, typename... Args, enable_if_t<!is_array< T >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr< T > make_unique ( Args &&... args)

创建unique_ptr

模板参数
T元素类型
Args构造函数参数类型
参数
args构造函数参数
返回
管理新对象的unique_ptr

在文件 unique_ptr.hpp1011 行定义.

引用了 _MSTL , 以及 forward().

被这些函数引用 typed_exception_wrapper< Ex >::clone(), exception_ptr::make_exception_ptr, lock_free_queue< T >::pop(), tree_barrier< CmplFunc >::tree_barrier() , 以及 lock_free_queue< T >::try_pop().

◆ make_unique() [2/3]

template<typename T, typename... Args, enable_if_t< is_bounded_array< T >::value, int > = 0>
unique_ptr< T > make_unique ( Args && ...)
delete

禁止创建已知边界数组的make_unique

模板参数
T已知边界数组类型
Args参数类型

引用了 MSTL_END_NAMESPACE__.

◆ make_unique() [3/3]

template<typename T, enable_if_t< is_unbounded_array< T >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr< T > make_unique ( const size_t len)

创建unique_ptr

模板参数
T数组元素类型
参数
len数组长度
返回
管理新数组的unique_ptr

在文件 unique_ptr.hpp1022 行定义.

◆ operator!=() [1/3]

template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator!= ( const unique_ptr< T, D > & lhs,
const unique_ptr< U, E > & rhs )

不等比较运算符

模板参数
T左操作数元素类型
D左操作数删除器类型
U右操作数元素类型
E右操作数删除器类型
参数
lhs左操作数
rhs右操作数
返回
是否不等

在文件 unique_ptr.hpp687 行定义.

引用了 unique_ptr< T, Deleter >::get().

◆ operator!=() [2/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator!= ( const unique_ptr< T, D > & lhs,
nullptr_t  )

与nullptr的不等比较运算符

模板参数
T元素类型
D删除器类型
参数
lhsunique_ptr对象
返回
是否非空

在文件 unique_ptr.hpp700 行定义.

◆ operator!=() [3/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator!= ( nullptr_t ,
const unique_ptr< T, D > & rhs )

nullptr与unique_ptr的不等比较运算符

模板参数
T元素类型
D删除器类型
参数
rhsunique_ptr对象
返回
是否非空

在文件 unique_ptr.hpp713 行定义.

◆ operator<() [1/3]

template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator< ( const unique_ptr< T, D > & lhs,
const unique_ptr< U, E > & rhs )

小于比较运算符

模板参数
T左操作数元素类型
D左操作数删除器类型
U右操作数元素类型
E右操作数删除器类型
参数
lhs左操作数
rhs右操作数
返回
是否小于

在文件 unique_ptr.hpp729 行定义.

引用了 _MSTL , 以及 unique_ptr< T, Deleter >::get().

◆ operator<() [2/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator< ( const unique_ptr< T, D > & lhs,
nullptr_t  )

与nullptr的小于比较运算符

模板参数
T元素类型
D删除器类型
参数
lhsunique_ptr对象
返回
是否小于nullptr

在文件 unique_ptr.hpp745 行定义.

引用了 _MSTL , 以及 unique_ptr< T, Deleter >::get().

◆ operator<() [3/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator< ( nullptr_t ,
const unique_ptr< T, D > & rhs )

nullptr与unique_ptr的小于比较运算符

模板参数
T元素类型
D删除器类型
参数
rhsunique_ptr对象
返回
nullptr是否小于

在文件 unique_ptr.hpp758 行定义.

引用了 _MSTL , 以及 unique_ptr< T, Deleter >::get().

◆ operator<=() [1/3]

template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator<= ( const unique_ptr< T, D > & lhs,
const unique_ptr< U, E > & rhs )

小于等于比较运算符

模板参数
T左操作数元素类型
D左操作数删除器类型
U右操作数元素类型
E右操作数删除器类型
参数
lhs左操作数
rhs右操作数
返回
是否小于等于

在文件 unique_ptr.hpp816 行定义.

◆ operator<=() [2/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator<= ( const unique_ptr< T, D > & lhs,
nullptr_t  )

与nullptr的小于等于比较运算符

模板参数
T元素类型
D删除器类型
参数
lhsunique_ptr对象
返回
是否小于等于nullptr

在文件 unique_ptr.hpp829 行定义.

◆ operator<=() [3/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator<= ( nullptr_t ,
const unique_ptr< T, D > & rhs )

nullptr与unique_ptr的小于等于比较运算符

模板参数
T元素类型
D删除器类型
参数
rhsunique_ptr对象
返回
nullptr是否小于等于

在文件 unique_ptr.hpp842 行定义.

◆ operator==() [1/3]

template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator== ( const unique_ptr< T, D > & lhs,
const unique_ptr< U, E > & rhs )

相等比较运算符

模板参数
T左操作数元素类型
D左操作数删除器类型
U右操作数元素类型
E右操作数删除器类型
参数
lhs左操作数
rhs右操作数
返回
是否相等

在文件 unique_ptr.hpp645 行定义.

引用了 unique_ptr< T, Deleter >::get().

◆ operator==() [2/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator== ( const unique_ptr< T, D > & lhs,
nullptr_t  )

与nullptr的相等比较运算符

模板参数
T元素类型
D删除器类型
参数
lhsunique_ptr对象
返回
是否为空

在文件 unique_ptr.hpp658 行定义.

◆ operator==() [3/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator== ( nullptr_t ,
const unique_ptr< T, D > & rhs )

nullptr与unique_ptr的相等比较运算符

模板参数
T元素类型
D删除器类型
参数
rhsunique_ptr对象
返回
是否为空

在文件 unique_ptr.hpp671 行定义.

◆ operator>() [1/3]

template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator> ( const unique_ptr< T, D > & lhs,
const unique_ptr< U, E > & rhs )

大于比较运算符

模板参数
T左操作数元素类型
D左操作数删除器类型
U右操作数元素类型
E右操作数删除器类型
参数
lhs左操作数
rhs右操作数
返回
是否大于

在文件 unique_ptr.hpp774 行定义.

引用了 unique_ptr< T, Deleter >::get().

◆ operator>() [2/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator> ( const unique_ptr< T, D > & lhs,
nullptr_t  )

与nullptr的大于比较运算符

模板参数
T元素类型
D删除器类型
参数
lhsunique_ptr对象
返回
是否大于nullptr

在文件 unique_ptr.hpp787 行定义.

引用了 _MSTL , 以及 unique_ptr< T, Deleter >::get().

◆ operator>() [3/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator> ( nullptr_t ,
const unique_ptr< T, D > & rhs )

nullptr与unique_ptr的大于比较运算符

模板参数
T元素类型
D删除器类型
参数
rhsunique_ptr对象
返回
nullptr是否大于

在文件 unique_ptr.hpp800 行定义.

引用了 _MSTL , 以及 unique_ptr< T, Deleter >::get().

◆ operator>=() [1/3]

template<typename T, typename D, typename U, typename E>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator>= ( const unique_ptr< T, D > & lhs,
const unique_ptr< U, E > & rhs )

大于等于比较运算符

模板参数
T左操作数元素类型
D左操作数删除器类型
U右操作数元素类型
E右操作数删除器类型
参数
lhs左操作数
rhs右操作数
返回
是否大于等于

在文件 unique_ptr.hpp858 行定义.

◆ operator>=() [2/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator>= ( const unique_ptr< T, D > & lhs,
nullptr_t  )

与nullptr的大于等于比较运算符

模板参数
T元素类型
D删除器类型
参数
lhsunique_ptr对象
返回
是否大于等于nullptr

在文件 unique_ptr.hpp871 行定义.

◆ operator>=() [3/3]

template<typename T, typename D>
MSTL_NODISCARD MSTL_CONSTEXPR20 bool operator>= ( nullptr_t ,
const unique_ptr< T, D > & rhs )

nullptr与unique_ptr的大于等于比较运算符

模板参数
T元素类型
D删除器类型
参数
rhsunique_ptr对象
返回
nullptr是否大于等于

在文件 unique_ptr.hpp884 行定义.

◆ reinterpret_pointer_cast() [1/2]

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

禁止的reinterpret_pointer_cast

模板参数
T目标类型
U源类型
参数
ptr源unique_ptr
注解
由于unique_ptr是独占所有权,不能从const引用转换

◆ reinterpret_pointer_cast() [2/2]

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

const_pointer_cast

模板参数
T目标类型
U源类型
参数
ptr源unique_ptr
返回
转换后的unique_ptr

在文件 unique_ptr.hpp963 行定义.

◆ static_pointer_cast() [1/2]

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

禁止的static_pointer_cast

模板参数
T目标类型
U源类型
参数
ptr源unique_ptr
注解
由于unique_ptr是独占所有权,不能从const引用转换

◆ static_pointer_cast() [2/2]

template<typename T, typename U>
MSTL_CONSTEXPR20 unique_ptr< T > static_pointer_cast ( unique_ptr< U > && ptr)

static_pointer_cast

模板参数
T目标类型
U源类型
参数
ptr源unique_ptr
返回
转换后的unique_ptr

在文件 unique_ptr.hpp939 行定义.

◆ swap()

template<typename T, typename Deleter, enable_if_t< is_swappable< Deleter >::value &&is_swappable< T >::value, int > = 0>
void swap ( unique_ptr< T, Deleter > & lhs,
unique_ptr< T, Deleter > & rhs )
noexcept

交换两个unique_ptr

模板参数
T元素类型
Deleter删除器类型
参数
lhs左操作数
rhs右操作数

在文件 unique_ptr.hpp630 行定义.