It’s like rkeene said, but also a weak ptr’s IsValid only returns true if the original address is still valid.
For example, if you check “if (MyPtr)” with a raw ptr, you’re not checking if the original data is valid, you’re checking to see if the ptr points to real data. Basically, this means the ptr is not nullptr - it doesn’t mean it’s the data you’re actually looking for.
TWeakPtr and TWeakObjectPtr are only valid if the original address is unless it’s been explicitly reassigned, so you can be certain that if IsValid is true on these objects, you’re pointing to the original data wrapped in this ptr.