У меня есть std::queue
, который завернут как шаблонный класс, чтобы создать потокобезопасную очередь. У меня есть две версии этого класса: одна, которая хранит типы значений, которая хранит типы указателей.
Для типа указателя мне не удается удалить элементы очереди при уничтожении. Причина в том, что я не знаю, как можно безопасно удалить элементы из очереди.
В этом справочном состоянии (без видимых причин, так что я не думаю, что это НЕ ГОСУДАРСТВО), что единственный способ удалить элементы из очереди для вызова pop()
. В ссылке также указано, что pop()
вызывает деструктор для элемента.
Ну, это вызывает проблемы с моими типами указателей, потому что они могут или не могут фактически указывать на агрегаты. Если один из них указывает на агрегат, все они будут, но из-за шаблона шаблона нет гарантии, какой тип (агрегированный или неагрегированный) мы имеем.
Итак, когда pop()
вызывает деструктор, что происходит? Как я могу гарантировать, что все будет удалено и освобождение памяти правильно?
Наконец, мое решение использует более старую версию GCC для ARM9. У меня нет контроля над этим. Я понимаю, что есть библиотеки, у которых есть умные указатели и контейнеры, которые здесь помогут, но они для меня не доступны.