Кто-нибудь знает о реализации shared_ptr и weak_ptr вместе с ленивым партнером по инициализации? Требованиями классов были:
-
A
lazy_ptrкласс, который позволяет клиенту построить объект позже (если вообще), без необходимости реализации конструктора -
A
weak_lazy_ptrкласс, который имеет три возможных состояния: еще не сконструирован (не будет привязан кshared_ptr), сконструирован (будет заблокирован доshared_ptr) и уничтожен (не будет блокироваться ashared_ptr)
Я создал несколько классов, которые совсем недавно не выполняли работу (см. статью CVu здесь), в которой использовались shared_ptr и weak_ptr в их реализации. Основные проблемы с моделью, в которой используются общие и слабые указатели USES, а не интеграция с ними:
-
Как только все объекты
lazy_ptrвыходят из области видимости, любые слабые ссылки больше не могут быть заблокированы, даже если другие клиенты держатshared_ptrверсии -
Невозможно управлять конструкцией объектов на разных потоках.
Я был бы признателен за любые указания на другие попытки согласования этих проблем или с любой текущей работой, которая может быть в этой области.