Цитирование первой части примечания, прикрепленного к документы boost::filesystem::directory_iterator (выделено мной):
Программы, выполняющие итерацию каталога, могут захотеть проверить, действительно ли существует путь, полученный путем разыменования итератора каталога. Это может быть символическая ссылка на несуществующий файл. Программы, рекурсивно просматривающие деревья каталогов с целью удаления и переименования элементов, могут избегать перехода по символическим ссылкам.
Мне становится ясно, что повторение каталога с целью удаления файлов является официально поддерживаемым вариантом использования и, следовательно, не сделает итератор недействительным. Кроме того, цитируя вторую часть этой заметки:
Если файл удаляется из каталога или добавляется в каталог после построения итератора directory_iterator для каталога, не указано, приведет ли когда-либо последующее увеличение итератора к итератору, значением которого является удаленная или добавленная запись каталога. См. ISO/IEC 9945 readdir_r().
Это очень конкретное утверждение о том, появится ли удаленный файл при переборе каталога. Опять же, я понимаю, что сам процесс итерации остается в силе в любом случае.
Обратите внимание, что ISO/IEC 9945 имеет аналогичную формулировку.
person
jlh
schedule
22.08.2013