Учитывая следующий код:
fs::path p{ "a/b/" };
fs::path q{ "a/b/." };
assert(p == q);
[Обратите внимание на дополнительную точку в конце строки, определяющей q.]
С учетом вышесказанного boost :: filesystem принимает p == q как истину, но реализация std :: filesystem в gcc и llvm говорит, что это ложь.
Почему расхождение между boost и std?
P.S. В предыдущих версиях этого вопроса я ошибочно думал, что пути должны быть нормализованы перед сравнением. Это не относится к делу. Несмотря на это, расхождение между boost и std все еще остается для меня загадкой.
"a/b/"
и"a/b/."
- это разные пути, которые называют одну и ту же запись - person Caleth   schedule 14.04.2020