Weak Pointers

Smart pointers that store weak references and do not prevent their objects from being destroyed.