Это все равно что ожидать, что оператор + сложит все вместе. Возможно, его нет в Стандарте, но это ожидаемое и вежливое поведение, чтобы уничтожить то, что вы назначаете.

мер, 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 * этому непосредственно? Разве своп не подразумевает, что __u назначен * этот элемент, только для того, чтобы позже присвоили 0 и false ... в этом случае своп выполняет ненужную работу. Чего мне не хватает? (unique_lock :: swap просто выполняет std :: swap для каждого члена)

Ответы на вопрос(4)

Ваш ответ на вопрос