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