¿Por qué shared_from_this no se puede usar en constructor desde el punto de vista técnico?

Enel libroLa biblioteca estándar de C ++ en la página 91 he leído esto sobreshared_from_this():

El problema es eseshared_ptr se almacena en un miembro privado dePersonClase base,enable_shared_from_this<>, al final de la construcción de la Persona.

El fragmento de código relevante del libro es:

class Person : public std::enable_shared_from_this<Person> {
   ...
};

No entiendo dos cosas aquí:

quien es esteshared_ptr que se almacenacómo puede almacenarse en cualquier lugar al final de la construcción dePerson? Creo que la construcción dePerson termina con la última declaración de su constructor que escribí por mí.

Entiendo que hayweak_ptr que aún no se ha inicializado.

EDITAR: ¡Gracias a Angew!shared_from_this funcionará solo después del primeroshared_ptr aPerson fue creado. Estashared_ptr comprobará siPerson clase heredada deenable_shared_from_this, y si es así, inicialice su internoweak_ptr.

Respuestas a la pregunta(1)

Su respuesta a la pregunta