This behaves just like the regular Windows style, with both separator
forms accepted, but with get_separator() returning forward slashes.
Add a new function make_preferred() (like the C++17
std::filesystem::path function with the same name), which converts
windows paths to the preferred separator form (while this one works on
any platform and takes a path::Style argument).
Contrary to native() (just like make_preferred() in std::filesystem),
this doesn't do anything at all on Posix, it doesn't try to reinterpret
backslashes into forward slashes there.
I wonder if the names would be more clear as:
... and then prefer the explicit windows_* names, eventually removing the plain windows. This avoids guessing games. WDYT?
BTW, since you're shuffling this enum anyway, I wonder if you could reorder native to the front? That way zero-initializers can be used in the common case.