I suspect that this is a bug. std::filesystem behaves as expected but ghc::filesystem does not behave as expected (see below). On Mac with ghc::filesystem: A path with the filename "t:est.txt" extension() returns "". Expected: ".txt" filename() returns "t:". Expected: "t:est.txt" stem() returns "t:". Expected: "t:est" These tests all fail: CHECK(fs::path("t:est.txt").extension() == ".txt"); CHECK(fs::path("t:est.txt").filename() == "t:est.txt"); CHECK(fs::path("t:est.txt").stem() == "t:est");