Para un POD-type o una clase con un trivial destructor: no. La vida útil del objeto finalizará cuando se libere o reutilice el almacenamiento del objeto. No tiene que llamar al destructor explícitamente si no lo desea.
Dicho esto, no hay ninguna razón para no hacerlo. Para un tipo con un destructor trivial, la llamada al destructor no generará ningún código.
Si, por una clase con un destructor "vacío" está permitiendo la posibilidad de que la clase tenga miembros o clases base con destructores no triviales, puede obtener un comportamiento indefinido si su programa depende de la invocación de estos destructores.
Tenga en cuenta que un destructor proporcionado por el usuario es un destructor no trivial, incluso si no es virtual y está vacío. A pesar de esto, todavía se le permite finalizar la vida útil de un objeto con dicho destructor simplemente liberando o reutilizando su almacenamiento, siempre que su programa no dependa de los efectos secundarios del destructor. (Consulte 3.8 [basic.life]/4 de ISO/IEC 14882: 2011)
@EdChum ¿Por qué? Él está colocando un solo objeto encima de ese buffer. – Benj
@Benj lo siento acaba de darse cuenta de mi error – EdChum
Con la colocación nueva, ¿también es responsable de llamar al destructor de cualquier subtipo? – Benj