MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
unique_ptr< T, Deleter > 模板类 参考

独占智能指针 更多...

#include <unique_ptr.hpp>

Public 类型

using pointer = typename _INNER __unique_ptr_impl<T, Deleter>::pointer
 指针类型
using element_type = T
 元素类型
using deleter_type = Deleter
 删除器类型

Public 成员函数

template<typename Del = Deleter, typename = DeleterConstraint<Del>>
constexpr unique_ptr (nullptr_t=nullptr) noexcept
 空指针构造
template<typename Del = Deleter, typename = DeleterConstraint<Del>>
MSTL_CONSTEXPR20 unique_ptr (pointer p) noexcept
 从指针构造
template<typename Del = deleter_type, enable_if_t< is_copy_constructible< Del >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr (pointer ptr, const deleter_type &del) noexcept
 从指针和复制删除器复制构造
template<typename Del = deleter_type, enable_if_t< is_move_constructible< Del >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr (pointer ptr, Del &&del) noexcept
 从指针和移动删除器移动构造
template<typename Del = deleter_type, typename DelMoveRef = remove_reference_t<Del>>
MSTL_CONSTEXPR20 unique_ptr (pointer, enable_if_t< is_lvalue_reference< Del >::value, DelMoveRef && >)=delete
 禁止从右值引用删除器构造
MSTL_CONSTEXPR20 unique_ptr (unique_ptr &&)=default
 移动构造函数
template<typename U, typename E, enable_if_t< conjunction< safe_conversion< U, E >, conditional_t< is_reference< Deleter >::value, is_same< E, Deleter >, is_convertible< E, Deleter > > >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr (unique_ptr< U, E > &&x) noexcept
 从其他unique_ptr转换构造
 ~unique_ptr () noexcept
 析构函数
unique_ptroperator= (unique_ptr &&)=default
 移动赋值运算符
template<typename U, typename E, enable_if_t< conjunction< safe_conversion< U, E >, is_assignable< deleter_type &, E && > >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptroperator= (unique_ptr< U, E > &&x) noexcept
 从其他unique_ptr移动赋值
MSTL_CONSTEXPR20 unique_ptroperator= (nullptr_t) noexcept
 nullptr赋值运算符
MSTL_CONSTEXPR20 add_lvalue_reference_t< element_typeoperator* () const noexcept(noexcept(*_MSTL declval< pointer >()))
 解引用运算符
MSTL_CONSTEXPR20 pointer operator-> () const noexcept
 成员访问运算符
MSTL_CONSTEXPR20 pointer get () const noexcept
 获取原始指针
MSTL_CONSTEXPR20 deleter_typeget_deleter () noexcept
 获取删除器引用
MSTL_CONSTEXPR20 const deleter_typeget_deleter () const noexcept
 获取const删除器引用
MSTL_CONSTEXPR20 operator bool () const noexcept
 bool转换运算符
MSTL_CONSTEXPR20 pointer release () noexcept
 释放所有权
MSTL_CONSTEXPR20 void reset (pointer ptr=pointer()) noexcept
 重置管理的指针
MSTL_CONSTEXPR20 void swap (unique_ptr &x) noexcept
 交换两个unique_ptr
 unique_ptr (const unique_ptr &)=delete
 禁止复制构造
unique_ptroperator= (const unique_ptr &)=delete
 禁止复制赋值

详细描述

template<typename T, typename Deleter = default_delete<T>>
class unique_ptr< T, Deleter >

独占智能指针

模板参数
T元素类型
Deleter删除器类型,默认为default_delete<T>

管理动态分配对象的独占所有权,确保对象在离开作用域时被正确删除。

在文件 unique_ptr.hpp259 行定义.

构造及析构函数说明

◆ unique_ptr() [1/5]

template<typename T, typename Deleter = default_delete<T>>
template<typename Del = Deleter, typename = DeleterConstraint<Del>>
unique_ptr< T, Deleter >::unique_ptr ( nullptr_t = nullptr)
inlineconstexprnoexcept

空指针构造

模板参数
Del删除器类型

在文件 unique_ptr.hpp284 行定义.

◆ unique_ptr() [2/5]

template<typename T, typename Deleter = default_delete<T>>
template<typename Del = Deleter, typename = DeleterConstraint<Del>>
MSTL_CONSTEXPR20 unique_ptr< T, Deleter >::unique_ptr ( pointer p)
inlinenoexcept

从指针构造

模板参数
Del删除器类型
参数
p要管理的指针

在文件 unique_ptr.hpp292 行定义.

◆ unique_ptr() [3/5]

template<typename T, typename Deleter = default_delete<T>>
template<typename Del = deleter_type, enable_if_t< is_copy_constructible< Del >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr< T, Deleter >::unique_ptr ( pointer ptr,
const deleter_type & del )
inlinenoexcept

从指针和复制删除器复制构造

模板参数
Del删除器类型
参数
ptr要管理的指针
del删除器对象

在文件 unique_ptr.hpp302 行定义.

◆ unique_ptr() [4/5]

template<typename T, typename Deleter = default_delete<T>>
template<typename Del = deleter_type, enable_if_t< is_move_constructible< Del >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr< T, Deleter >::unique_ptr ( pointer ptr,
Del && del )
inlinenoexcept

从指针和移动删除器移动构造

模板参数
Del删除器类型
参数
ptr要管理的指针
del删除器对象

在文件 unique_ptr.hpp313 行定义.

◆ unique_ptr() [5/5]

template<typename T, typename Deleter = default_delete<T>>
template<typename U, typename E, enable_if_t< conjunction< safe_conversion< U, E >, conditional_t< is_reference< Deleter >::value, is_same< E, Deleter >, is_convertible< E, Deleter > > >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr< T, Deleter >::unique_ptr ( unique_ptr< U, E > && x)
inlinenoexcept

从其他unique_ptr转换构造

模板参数
U源元素类型
E源删除器类型
参数
x源unique_ptr

在文件 unique_ptr.hpp332 行定义.

成员函数说明

◆ operator bool()

template<typename T, typename Deleter = default_delete<T>>
MSTL_CONSTEXPR20 unique_ptr< T, Deleter >::operator bool ( ) const
inlineexplicitnoexcept

bool转换运算符

返回
是否管理非空对象

在文件 unique_ptr.hpp397 行定义.

◆ operator*()

template<typename T, typename Deleter = default_delete<T>>
MSTL_CONSTEXPR20 add_lvalue_reference_t< element_type > unique_ptr< T, Deleter >::operator* ( ) const
inlinenoexcept

解引用运算符

返回
管理对象的引用

在文件 unique_ptr.hpp376 行定义.

◆ operator->()

template<typename T, typename Deleter = default_delete<T>>
MSTL_CONSTEXPR20 pointer unique_ptr< T, Deleter >::operator-> ( ) const
inlinenoexcept

成员访问运算符

返回
管理对象的指针

在文件 unique_ptr.hpp385 行定义.

◆ operator=() [1/2]

template<typename T, typename Deleter = default_delete<T>>
MSTL_CONSTEXPR20 unique_ptr & unique_ptr< T, Deleter >::operator= ( nullptr_t )
inlinenoexcept

nullptr赋值运算符

返回
当前对象引用

在文件 unique_ptr.hpp367 行定义.

◆ operator=() [2/2]

template<typename T, typename Deleter = default_delete<T>>
template<typename U, typename E, enable_if_t< conjunction< safe_conversion< U, E >, is_assignable< deleter_type &, E && > >::value, int > = 0>
MSTL_CONSTEXPR20 unique_ptr & unique_ptr< T, Deleter >::operator= ( unique_ptr< U, E > && x)
inlinenoexcept

从其他unique_ptr移动赋值

模板参数
U源元素类型
E源删除器类型
参数
x源unique_ptr
返回
当前对象引用

在文件 unique_ptr.hpp357 行定义.

◆ swap()

template<typename T, typename Deleter = default_delete<T>>
MSTL_CONSTEXPR20 void unique_ptr< T, Deleter >::swap ( unique_ptr< T, Deleter > & x)
inlinenoexcept

交换两个unique_ptr

参数
x要交换的对象

在文件 unique_ptr.hpp421 行定义.


该类的文档由以下文件生成: