Can anyone provide some cases in which it would be beneficial to use std::weak_ptr over std::shared_ptr? I understand the difference between them in terms of their function (std