Почему enable_shared_from_this встраивает слабый указатель вместо прямого встраивания счетчика ссылок?

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

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

10
задан curiousguy 31 August 2019 в 19:03
поделиться