Реализация Microsoft 100 * *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, или я сам читаю Стандарт неправильно,или я вижу призраков, и никто другой не может даже воспроизвести это?