例如,stdlibc + + 具有以下内容:
unique_lock& operator=(unique_lock&& __u)
{
if(_M_owns)
unlock();
unique_lock(std::move(__u)).swap(*this);
__u._M_device = 0;
__u._M_owns = false;
return *this;
}
为什么不直接将两个 _ _ u 成员分配给 * this?交换是否意味着 _ _ u 被赋予 * this 成员,只是后来被赋予0和 false... 在这种情况下,交换正在做不必要的工作。我错过了什么? (惟一的 _ lock: : swap 只在每个成员上执行一个 std: : switch)