C ++ std :: queue :: pop () chama o destruidor. Qual dos tipos de ponteiro?

eu tenho umstd::queue que é empacotado como uma classe de modelo para fazer uma fila de thread-safe. Eu tenho duas versões desta classe: uma que armazena tipos de valor, um que armazena tipos de ponteiro.

Para o tipo de ponteiro, estou tendo problemas para excluir os elementos da fila na destruição. O motivo é que não sei como remover os itens da fila com segurança.

este estados de referência (vago, então eu acho que não realmente dizer) que a única maneira de remover elementos da fila é chamarpop(). A referência também diz quepop() chama o destruidor para o item.

Bem, isso causa problemas com meus tipos de ponteiro porque eles podem ou não realmente apontar para agregados. Se um deles apontar para um agregado, todos eles serão, mas como o wrapper é modelado, não há garantia de qual tipo (agregado ou não agregado) estamos lidando.

Então quandopop() chama o destruidor, o que acontece? Como posso garantir que tudo está sendo removido e a desalocação de memória corretamente?

Por fim, minha solução está usando uma versão mais antiga do GCC para o ARM9. Eu não tenho controle sobre isso. Eu entendo que existem bibliotecas que têm ponteiros e contêineres inteligentes que ajudariam aqui, mas estão fora dos limites para mim.

questionAnswers(3)

yourAnswerToTheQuestion