C ++ std :: queue :: pop () llama a destructor. ¿Qué pasa con los tipos de puntero?

tengo unstd::queue que se envuelve como una clase con plantilla para hacer una cola segura para subprocesos. Tengo dos versiones de esta clase: una que almacena tipos de valor, una que almacena tipos de punteros.

Para el tipo de puntero, tengo problemas para eliminar los elementos de la cola en la destrucción. La razón es que no conozco una forma de eliminar los elementos de la cola de forma segura.

Esta estados de referencia (vacuamente, así que supongo que en realidad no lo dice) que la única forma de eliminar elementos de la cola es llamarpop(). La referencia también dice quepop() llama al destructor para el elemento.

Bueno, esto causa problemas con mis tipos de punteros porque pueden o no apuntar a agregados. Si uno de ellos apunta a un agregado, todos lo harán, pero como la envoltura tiene una plantilla, no hay garantía de qué tipo (agregado o no agregado) estamos tratando.

Así que cuandopop() Llama al destructor, que pasa? ¿Cómo me aseguro de que todo se elimine y la desasignación de memoria de manera adecuada?

Por último, mi solución está utilizando una versión anterior de GCC para ARM9. No tengo control sobre esto. Entiendo que hay bibliotecas que tienen punteros inteligentes y contenedores que ayudarían aquí, pero están fuera de los límites para mí.

Respuestas a la pregunta(3)

Su respuesta a la pregunta