¿Cómo funciona RAII cuando un constructor lanza una excepción?

Estoy aprendiendo sobre el lenguaje RAII en C ++ y cómo usar punteros inteligentes.

n mi lectura, me he encontrado con dos cosas que, para mí, parecen contradecirse.

Citado dehttp: //www.hackcraft.net/raii:

... si se ha creado un objeto miembro con semántica RAII y se produce una excepción antes de que el constructor se haya completado, se llamará a su destructor como parte del desbobinado de la pila. Por lo tanto, un objeto que controla múltiples recursos puede garantizar su limpieza incluso si no está completamente construido utilizando objetos RAII miembros.

Pero citado dehttp: //www.parashift.com/c++-faq-lite/exceptions.html#faq-17.1:

Si un constructor produce una excepción, el destructor del objeto no se ejecuta. Si su objeto ya ha hecho algo que debe deshacerse (como asignar algo de memoria, abrir un archivo o bloquear un semáforo), un miembro de datos dentro del objeto debe recordar estas "cosas que deben deshacerse"

Y luego, la segunda fuente vinculada recomienda utilizar punteros inteligentes para tratar el problema de las cosas que ya estaban asignadas en el constructor.

Entonces, ¿qué sucede realmente en estos escenarios?

Respuestas a la pregunta(6)

Su respuesta a la pregunta