我掃描shared_ptr
實施GCC 5,我看到以下內容:GCC shared_ptr的拷貝賦值實施
__shared_ptr&
operator=(__shared_ptr&& __r) noexcept
{
__shared_ptr(std::move(__r)).swap(*this);
return *this;
}
我的問題是,爲什麼交換前的臨時的額外舉措構建?我認爲編譯將消除任何額外的開銷 - 但爲什麼不只是撥打__r.swap(*this)
?我錯過了一些聰明的副作用嗎?
我看到類中的其他函數也使用相同的模式實現,我可以理解接受const引用但接受右值引用的情況嗎?
這是有道理的,這些天我應該停止拖延和掃描標準... – Nim