Здравствуйте, B0FEE664, Вы писали:
BFE>>>·>Ты же сам ответил на свой вопрос: разработка std::filesystem базировалась на этом взятом из UNIX систем стандарте. Очевидно же.
BFE>>>Это не ответ на мой вопрос.
BFE>>>Зачем в стандарт языка тащить стандарт API системы?
BFE>·>posix — это не api конкретной системы.
BFE>Да. 
Т.е. твоя идея std::posix_filesystem — не состоятельна и "Зачем в стандарт языка тащить стандарт API системы" — дурацкий вопрос.
BFE>А некоторые версии Windows поддерживают Posix. И что?
Я в курсе. И ничего.
BFE>Остальные тоже тоже как-то стандартизованы отдельными документами.
И что?
BFE>Что из перечисленного:
BFE>fstream, std::cin, std::cout, atomic, chrono, mutex, random, thread, locale, map, vector, string
BFE>описано в отдельном стандарте?
Не знаю. А какая разница? Разбираться лень, но например thread по сути поделие для замены posix-тредов.
Кстати, а в каком отдельном стандарте описано std::filesystem?
BFE>·>Это же ЯП. Не понимаю я таких аргументов.
BFE>По какому критерию выбран именно этот стандарт для добавления в C++, а не какой-то другой?
Понятия не имею. А какая разница?
BFE>>>POSIX — это только часть возможного приложения языка, а C++ — универсальный язык. Хотите добавить что-то специфичное, то так и назовите std::posix_filesystem
BFE>·>А я понимаю: ты путаешь ЯП и стандартную библиотеку. Так вот... std — это стандартная библиотека языка, а не язык.
BFE>std библиотека описана в том же стандарте, что и сам язык. Более того, некоторые части std библиотеки являются неотъемлемой часть языка, например std::initializer_list.
И что? И кто из fstream, std::cin, std::cout, atomic, chrono, mutex, random, thread, locale, map, vector, string является неотъемлемой часть языка?
BFE>>>
Ладно, если вы не понимаете словами, попробую описать задачу. У вас есть символьная ссылка, то на что она указывает не существует. Вопрос: как создать тот путь, на который она указывает, чтобы не нарушить требование выше: "Portable code should use (3,4)"
BFE>·>Изучай доки как файловая система работает. Задача std — обеспечить стандартизованый доступ к API файловой системы, а то как она функционирует — опредеяется реализацией фс.
BFE>Скажите, какая цель создания библиотеки std::filesystem ?
Такая же как у fstream, std::cin, std::cout, atomic, chrono, mutex, random, thread, locale, map, vector, string.
BFE>·>Это, кстати, заморочки win/ntfs, насколько я понял. Если у тебя где-то под рукой есть Винда, можешь потетстить.
BFE>Да неужели?
Ну да.
BFE>А вот скажите, для работы с (ex)FAT накопителями, которые, по числу, видимо, превосходят количество накопителей на других форматах файловых систем, библиотека std::filesystem приспособлена хорошо?
define "хорошо". И что, по-твоему, приспособлено лучше?
BFE>·>Зачем? Они не такие уж экзотические. Скажем, даже в винде есть "\\.\pipe\".
BFE>Уверен, что если провести опрос, то окажется что более 90% программистов никогда в жизни не работали с такими файлами именно как с файлами.
И что?
BFE>·>Да, кстати, implementation-defined типы тоже поддерживаются.
BFE>я знаю.
А в чём тогда претензия?
BFE>·>Не очень ясно написано. Напиши тесты, поглядим как сделать имплементацию.
BFE>pathName first second
BFE>"" "" ""
BFE>"/" "/" ""
BFE>"a" "" "a"
BFE>"/a" "/" "a"
BFE>"b/a" "b/" "a"
BFE>"a/" "" "a"
BFE>"a/." "" "a"
BFE>"a/.." "a/.." ""
BFE>"/a/b" "/a" "b"
BFE>"../b" ".." "b"
BFE>"./b" "." "b"
Это просто parent_path и filename. Вот только почему-то ты хочешь случайно расставленные / с неясно какой целью. Добавляй их сам. Я логику не улавливаю.
Покажи решение на ЯП/либе, в которых, есть по-твоему правльно реализованный path.
BFE>·>Понятно, но не правильно. Последний компонент path — всегда имя. Каким типом файла является данное имя в данной файловой системе — по пути никак не определить. Чтобы узнать — надо прочитать содержимое фс.
BFE>Укажите на имя для пути "/a/" и для пути "/"
В данных путях его нет, has_filename возвращает false.
BFE>·>Всё равно неясно. Почему в других ЯП с удачей всё в порядке, скажем, rust std::fs удача не понадобилась, а в C++ — просто место проклятое, наверное.
BFE>Другие языки тоже универсальные?
А какие ты не универсальные языки знаешь? Ну кроме sql, html?
BFE>rust уже стандартизовали?
Не знаю. А какая разница?