Effects: If r is empty, constructs
an empty weak_ptr object that stores a null pointer value;
a weak_ptr object that shares ownership
with r and stores a copy of the pointer stored in r.
under the equivalence relation defined by owner_before,
!a.owner_before(b)&&!b.owner_before(a), two shared_ptr or
weak_ptr instances are equivalent if and only if they share ownership or are