Given the following code:
fs::path p{ "a/b/" };
fs::path q{ "a/b/." };
assert(p == q);
[Note the extra dot at the end of the string defining q.]
With the above, boost::filesystem accepts p == q as true, but gcc's and llvm's implementation of std::filesystem say it is false.
Why the discrepancy between boost and std?
P.S. In previous versions of this question, I erroneously thought that the paths were supposed to be normalized before comparison. That is not the case. Even so, the discrepancy between boost and std is still a mystery to me.