Вы не можете вызвать shared_from_this()
в конструкторе объекта. shared_from_this()
требует, чтобы объект принадлежал как минимум одному shared_ptr
. Объект не может принадлежать shared_ptr
до его создания.
Я бы предположил, что внутренний слабый указатель устанавливается, когда shared_ptr
впервые становится владельцем объекта. До этого момента не существует структуры подсчета ссылок, на которую может ссылаться слабый указатель.