By taking a look at Table 71: Container requirements it is stated that container's internal structure will be destroyed.
a = rv
=> All existing elements of a are either move assigned to or destroyed
As Howard Hinnant
has mentioned in the comments, there is a special case which has also been stated in above sentence:
All existing elements of a are either move assigned to or
destroyed.
This spacial case is related to move-assignment operator and simply has 3 different states:
propagate_on_container_move_assignment
is true
in lhs:
In this case allocated memory in lhs is freed and the move operation is done. The allocator is also move assigned.
propagate_on_container_move_assignment
is false
in lhs and the allocators from both sides are equal:
In this case same sequence of operations is done except that there is no need to assign to the lhs allocator.
propagate_on_container_move_assignment
is false
in lhs and the allocators from both sides are not equal:
In this case because two allocators are not equal the allocator of lhs container cannot be used to manage the memory of the rhs container so the only option is to move assign rhs container items to the lhs container.
The last case explains why items in lhs container can be move assigned to. In any case the memory will be freed, reused or reallocated.