boost::filesystem::remove_all() и std::filesystem::remove_all() ведут себя по-разному в Visual Studio 2017
Внедрение Microsoft std::filesystem::remove_all()
кажется, дают другие возвращаемые значения, чем оригинал boost::filesystem::remove_all()
при удалении пустых каталогов, кроме подкаталогов. Улучшенная версия подсчитывает все удаленные объекты файловой системы, то есть файлы и каталоги, в то время как версия MS не учитывает подкаталоги, даже если она удаляет их.
Таким образом, с VS2017 и его std::experimental::filesystem::v1
пример программы показан по ссылке выше:
#include <iostream>
#include <cstdint>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::path dir = fs::temp_directory_path();
fs::create_directories(dir / "abcdef/example");
std::uintmax_t n = fs::remove_all(dir / "abcdef");
std::cout << "Deleted " << n << " files or directories\n";
}
не возвращает официальный ответ
Удалил 2 файла или каталог
скорее
Удалено 0 файлов или каталогов
Я полагаю, что это связано с неправильным пониманием спецификаций о том, что функция...
Возвращает: количество удаленных файлов
Может быть, MS интерпретирует "файл" строго как объект файловой системы file_type::regular_file
вместо того, чтобы подчиняться определению в черновике, которое явно объявляет файл...
Объект в файловой системе, который содержит пользовательские или системные данные. [...] Типы файлов включают обычные файлы и каталоги.
Вопрос
Это то, что я должен поднять в Microsoft, или я сам читаю Стандарт неправильно, или я вообще вижу призраков, и никто другой не может даже воспроизвести это?