std::auto_ptr<T>::operator=
來自 cppreference.com
auto_ptr& operator=( auto_ptr& r ) throw(); |
(1) | (自 C++11 起廢棄) (在 C++17 中已移除) |
template< class Y > auto_ptr& operator=( auto_ptr<Y>& r ) throw(); |
(2) | (自 C++11 起廢棄) (在 C++17 中已移除) |
auto_ptr& operator=( auto_ptr_ref<T> m ) throw(); |
(3) | (自 C++11 起廢棄) (在 C++17 中已移除) |
將託管物件替換為由 r 或 m 託管的物件。
1) 有效地呼叫 reset(r.release())。
2) 有效地呼叫 reset(r.release())。
Y*
必須能隱式轉換為 T*
。3) 有效地呼叫 reset(m.release())。
auto_ptr_ref
是一個實現定義的型別,它持有對 auto_ptr
的引用。std::auto_ptr 可以隱式轉換為和從此型別。實現允許提供帶有不同名稱的模板或以其他方式實現等效功能。目錄 |
[編輯] 引數
r | - | 另一個 auto_ptr ,用於從中轉移物件所有權 |
m | - | 一個實現定義的型別的物件,持有對 auto_ptr 的引用 |
[編輯] 返回值
*this.
[編輯] 注意
提供 auto_ptr_ref
的建構函式和複製賦值運算子是為了允許從無名臨時物件複製構造和賦值 std::auto_ptr。由於其複製建構函式和複製賦值運算子將引數作為非 const 引用,它們不能直接繫結右值引數。然而,可以執行使用者定義轉換(這會釋放原始 auto_ptr
),然後呼叫接受 auto_ptr_ref
作為值的建構函式或複製賦值運算子。這是移動語義的早期實現。
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 127 | C++98 | auto_ptr 不能從 auto_ptr_ref 賦值 |
添加了過載 (3) |