Game Programming > Objects states:
Object destruction is handled automatically by the garbage collection system when an Object is no longer referenced by the engine. This means that no UPROPERTY pointers, or engine containers or smart pointer class instances (such as TArray or TWeakPtr) have any pointers to it.
This contradicts the Weak Pointer documentation which states:
Weak pointers store a weak reference to an object. Unlike a shared pointer, a weak pointer will not prevent an object from being destroyed.