Какой раздел стандарта С++ 11 (здесь копия черновика стандарта) требует ассоциативных контейнеров, таких как std:: set, std:: map, std:: unordered_set и std:: unordered_map, чтобы немедленно вызвать деструкторы объектов, которые удалены из них?
Другими словами, стандартизованные ассоциативные контейнеры позволяют задерживать (не elide!) свои вызовы деструкторам ключей и/или значений ключей и значений, которые они хранят?
Если нет, какой раздел в стандарте запрещает?
Я спрашиваю, потому что меня интересуют ленивые удаления (иногда называемые слабые удаления) в ассоциативных контейнерах. Это метод "стирания" ключа (или пары ключ/значение) из структуры, в которой фактические данные остаются на месте, но содержащая его node помечена как мертвая. Их иногда называют надгробными камнями. Они используются во многих документах теории структуры данных, а иногда используются на практике.
Очень простой пример - удаление в хэш-таблицах с открытым обращением, которое иногда реализуется с надгробиями. Когда хеш-таблица в конечном итоге восстанавливается, вызывается все деструкторы, а пары с ключом/значением могут быть фактически удалены и деблокированы.