extended weak_ptr and intrusive_ptr with move constructors and assignments. Move-semantics for weak_ptrs works only if both weak_ptr are of the same template-type T