All standard library containers are left in a valid but unspecified state after being moved from. For example, in the following code, v2
will contain {1, 2, 3, 4}
after the move, but v1
is not guaranteed to be empty.
int main() {
std::vector<int> v1{1, 2, 3, 4};
std::vector<int> v2 = std::move(v1);
}
Some classes do have a precisely defined moved-from state. The most important case is that of std::unique_ptr<T>
, which is guaranteed to be null after being moved from.