Как правило, вам необходимо защитить весь экземпляр контейнера списка с помощью блокировки или мьютекса в многопоточной среде.
Если вы храните новые объекты в вашем контейнере, то деструктор будет вызываться только тогда, когда выудаляем указатель на объект.
Дальнейший ответ на ваш вопрос зависит от:
1. Что вы храните в списке?Сам объект или указатель на объект
2. «Если я вызываю деструктор для одного из моих объектов в списке» ... Означает ли это удаление узла списка или извлечение указателя из списка, а затем его удаление?удаления узла списка [Это не хорошо, если вы не укажете указатель на NULL].
Если вы храните сам объект, list.remove вызовет деструктор для объекта.
Если вы храните указатель на объект .. list.remove не будет вызывать деструктор, и я думаю, что он также не работает [исправьте меня, если я ошибаюсь]
3. Стандарт дает гарантию, что итератор списка не будет признан недействительным при добавлении и объединении ... но станет недействительным, если итератор будет указывать на удаленный элемент.