我扫描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