Помощник enable_shared_from_this
содержит слабый указатель, который устанавливается при создании общего указателя на объект. Это означает, что есть счетчик ссылок (выделенный отдельно или вместе с объектом с помощью make_shared
) и дополнительный weak_ptr
в объекте.
Теперь, почему вместо этого он просто не содержит счетчик ссылок? При установке shared_ptr
из немого указателя тип должен быть полностью определен, поэтому конструктор shared_ptr
или оператор присваивания могут определить тип, полученный из enable_shared_from_this
, и использовать правильный счетчик, а формат может оставаться прежним, поэтому копирование не имеет значения. На самом деле, shared_ptr
уже должен его обнаружить, чтобы установить встроенный weak_ptr
.