This is a series of three patches to simplify the logic used to construct a std::filesystem::path from strings/ranges of arbitrary characters, and fix one bug.
The simpler logic also avoids some unnecessary string constructions when a string view could be used instead. Previously a string view was only used for strings and pairs of pointers. Now contiguous iterators will be detected (using the concept in C++20, or by handling the __normal_iterator wrapper in C++17). The bug fix should be backported, the rest would be safe but doesn't need to be.