Здравствуйте, Юрий Жмеренецкий, Вы писали:
ЮЖ>Хотя weak_ptr::expired и предназначен для использования в указанном выше сценарии(см. выделенное), но в коде показано совершенно другое. В присутствии многопоточности этот код может привести в ошибке т.к даже если вызов weak_ptr::expired вернет false, это не дает гарантии что weak_ptr::lock возвратит валидный объект. Перед вызовом weak_ptr::lock вызов weak_ptr::expired избыточен.
В статье я умышленно не рассматривал вопросы, связанные с работой в многопоточной среде, чтобы не усложнять тему.
Возможно, в следующей версии статьи я исправлю этот недостаток.