给定以下代码:
fs::path p{ "a/b/" };
fs::path q{ "a/b/." };
assert(p == q);
[注意定义 q 的字符串末尾的额外点。]
如上所述,boost::filesystem 接受 p == q 为真,但 gcc 和 llvm 的 std::filesystem 实现说它是假的。
为什么 boost 和 std 之间存在差异?
PS在这个问题的以前版本中,我错误地认为在比较之前应该对路径进行规范化。事实并非如此。即便如此,boost 和 std 之间的差异对我来说仍然是个谜。