|
| 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_ptr & | operator= (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_ptr & | operator= (unique_ptr< U, E > &&x) noexcept |
| | 从其他unique_ptr移动赋值
|
| MSTL_CONSTEXPR20 unique_ptr & | operator= (nullptr_t) noexcept |
| | nullptr赋值运算符
|
| MSTL_CONSTEXPR20 add_lvalue_reference_t< element_type > | operator* () const noexcept(noexcept(*_MSTL declval< pointer >())) |
| | 解引用运算符
|
| MSTL_CONSTEXPR20 pointer | operator-> () const noexcept |
| | 成员访问运算符
|
|
MSTL_CONSTEXPR20 pointer | get () const noexcept |
| | 获取原始指针
|
|
MSTL_CONSTEXPR20 deleter_type & | get_deleter () noexcept |
| | 获取删除器引用
|
|
MSTL_CONSTEXPR20 const deleter_type & | get_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_ptr & | operator= (const unique_ptr &)=delete |
| | 禁止复制赋值
|
template<typename T, typename Deleter = default_delete<T>>
class unique_ptr< T, Deleter >
独占智能指针
- 模板参数
-
| T | 元素类型 |
| Deleter | 删除器类型,默认为default_delete<T> |
管理动态分配对象的独占所有权,确保对象在离开作用域时被正确删除。
在文件 unique_ptr.hpp 第 259 行定义.