Is unique_ptr guaranteed to store nullptr after move?
c++, c++11, move-semantics, unique-ptr
Solution
Yes, you can compare it to `nullptr` after the `move` and it is guaranteed to compare equal.
From §20.8.1/4 [unique.ptr]
Additionally, `u` can, upon request, transfer ownership to another unique pointer `u2`. Upon completion of such a transfer, the following postconditions hold: — `u2.p` is equal to the pre-transfer `u.p`, — `u.p` is equal to `nullptr`, and ...
(the member `p` is described earlier as — a unique pointer is an object `u` that stores a pointer to a second object `p`)
Problem
Is `unique_ptr` guaranteed to store `nullptr` after move? ``` std::unique_ptr<int> p1{new int{23}}; std::unique_ptr<int> p2{std::move(p1)}; assert(!p1); // is this always true? ```