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