¿Qué destructores se ejecutan cuando el constructor lanza una excepción?

En C ++, si un constructor lanza una excepción, ¿qué destructores se ejecutan?

En particular, ¿hay alguna diferencia si la excepción es durante la lista de inicialización o el cuerpo?

Además, ¿qué pasa con la herencia y los miembros? Presumiblemente todas las construcciones terminadas se destruyen. Si solo se construyen algunos miembros, ¿solo se destruyen aquellos? Si hay herencia múltiple, ¿se destruyen todos los constructores completados? ¿La herencia virtual cambia algo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta