No entiendo el propósito de boost :: checked_delete. La documentación dice:Propósito del impulso :: checked_desert
el estándar de C++ permite, en 5.3.5/5, punteros a tipos de clases incompletas a ser eliminados con un delete-expresión. Cuando la clase tiene un destructor no trivial , o un operador de clase específico delete, el comportamiento es undefined. Algunos compiladores emiten una advertencia cuando se borra un tipo incompleto , pero desafortunadamente, no todos hacen, y los programadores a veces ignoran o deshabilitan las advertencias.
la función y clase suministrado plantillas se pueden utilizar para evitar estos problemas , ya que requieren un tipo completo , y causar un error de compilación lo contrario.
Así estándar de C++ le permite borrar tipos incompletas, lo que provoca un comportamiento indefinido si el tipo tiene un destructor no trivial. ¿Qué? ¿Cómo puede un tipo incompleto tener algún destructor? ¿No es un tipo incompleto solo un prototipo?
¿Podría tener esto algo que ver con rebanar? http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c – Cogwheel