Unlike shared_ptr, scoped_ptr and auto_ptr, a boost weak_ptr doesn’t overload operator-} and operator*. Ditto for std::weak_ptr.
There’s an important implication.
“If I want to veto deletion of internal ptr, then I must join the club, i.e. the club must register me as –veto– member”.
As a passive observer, weak_ptr is helpless to prevent the internal pointer’s demise. There’s an important implication again .
 No direct means to get the raw pointer from a weak_ptr. You must create and go through a shared_ptr, either this->lock() or shared_ptr conversion ctor. I feel a weak_ptr instance is an observer using a shared_ptr instance as a lens.
 User of weak_ptr can’t reliably use the referenced resource, since the resource could disappear any time.
Crucially, a std::weak_ptr can be empty, as explained on P96 [[std c++lib]]. We can detect weak_ptr emptiness when the inner ptr is deleted. In contrast, raw ptr doesn’t offer this feature — if the underlying heap object is reclaimed, the raw ptr becomes dangling and we have absolutely no way to detect that, according to my friend Paul M.