跳到主要内容

std::auto_ptr<T>::operator auto_ptr<Y>

C++11 中已弃用,C++17 中已移除
template< class Y >
operator auto_ptr_ref<Y>() throw(); (1)

template< class Y >
operator auto_ptr<Y>() throw(); (2)

*this 转换为一个指向不同类型 Y 的 auto_ptr。

  1. 返回一个实现定义的类型,该类型持有对 *this 的引用。std::auto_ptr 可从此模板转换和赋值。实现允许使用不同的模板名称或以其他方式实现等效功能。

  2. 通过调用 release() 获取指针来构造一个新的 auto_ptr。

参数

(无)

返回值

  1. 一个实现定义的类型,该类型持有对 *this 的引用
  2. 通过调用 release() 获取指针的 auto_ptr。

备注

提供了从 auto_ptr_ref 的构造函数和复制赋值运算符,以便从无名临时变量复制构造和赋值 std::auto_ptr。由于其复制构造函数和复制赋值运算符将参数作为非 const 引用,因此它们不能直接绑定右值参数。但是,可以执行用户定义的转换(这将释放原始 auto_ptr),然后调用接受 auto_ptr_ref 作为值的构造函数或复制赋值运算符。这是移动语义的早期实现。

std::auto_ptr<T>::operator auto_ptr<Y>

C++11 中已弃用,C++17 中已移除
template< class Y >
operator auto_ptr_ref<Y>() throw(); (1)

template< class Y >
operator auto_ptr<Y>() throw(); (2)

*this 转换为一个指向不同类型 Y 的 auto_ptr。

  1. 返回一个实现定义的类型,该类型持有对 *this 的引用。std::auto_ptr 可从此模板转换和赋值。实现允许使用不同的模板名称或以其他方式实现等效功能。

  2. 通过调用 release() 获取指针来构造一个新的 auto_ptr。

参数

(无)

返回值

  1. 一个实现定义的类型,该类型持有对 *this 的引用
  2. 通过调用 release() 获取指针的 auto_ptr。

备注

提供了从 auto_ptr_ref 的构造函数和复制赋值运算符,以便从无名临时变量复制构造和赋值 std::auto_ptr。由于其复制构造函数和复制赋值运算符将参数作为非 const 引用,因此它们不能直接绑定右值参数。但是,可以执行用户定义的转换(这将释放原始 auto_ptr),然后调用接受 auto_ptr_ref 作为值的构造函数或复制赋值运算符。这是移动语义的早期实现。