执行以下操作安全吗?
auto pt = getUniquePtr();
while (pt) {
vector_of_objects.push_back(std::move(pt));
pt = getUniquePtr();
}
getUniquePtr
返回一个unique_ptr<MyObject>
。我相信,在移开对象之后,是否将其他内容重新分配给pt
没关系,对吗? 最佳答案
是的,这很好。
从对象移开会使其处于有效但未指定的状态。所有类不变式都得到维护,并且操作按规定进行。
这意味着您可以依靠能够重新分配,但不能对指针的当前内容做任何保证。
关于c++ - 移动并重新分配内容后的unique_ptr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33868253/