unique_ptr
保证在移动后存储nullptr
吗?
std::unique_ptr<int> p1{new int{23}};
std::unique_ptr<int> p2{std::move(p1)};
assert(!p1); // is this always true?
发布于 2014-06-05 21:42:37
可以,您可以在move
之后将其与nullptr
进行比较,并且保证比较相等。
来自§20.8.1/4 unique.ptr
此外,
u
可以根据请求将所有权转移给另一个唯一的指针u2
。完成此类传输后,以下后置条件成立:
- u2.p
等于传输前的u.p
,
- u.p
nullptr
,等于,并且
..。
(成员p
早先描述为-唯一指针是存储指向第二个对象p
的指针的对象u
)
发布于 2014-06-05 21:44:19
是。来自C++2011标准第20.7.1/4节
此外,您还可以根据请求将所有权转移到另一个唯一指针u2。完成这样的传输后,以下后置条件成立...等于nullptr...
https://stackoverflow.com/questions/24061767
复制相似问题