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