> Agreed. Andrew simply suggested that one way to avoid the the> destruction of the object (by thread A) between the test and the> access (in thread B) is to first promote the weak pointer in thread B> to temporarily keep the object alive.

Unless you are happy with 'this' becoming null during the execution of a
function (which by the way can be useful in rare cases, but may require a
specific notation with a prototype like "public int myfunction(params)
weak").

imagining your implicit "this" is strong, you can also note that it is what
you _will_ do whatever the case using "my_ptr->function"
because here "->" _always_ promote to strong pointer. so this promotion is
forcefully existing in your language.
promoting to strong by hand before the test "ptr != null" would be just an
explicit way to do it: no new runtime code to implement.