The standard include for C++ does not allow assigning a `unique_ptr`. Instead, `p=q` is done by `p.reset(q.release())` or `p=std::move(p)`.