I do like having a path class rather then a simple string so that I can use member functions to access path components, get canonical name, etc. Policies could be used to implement some of this functionality with prebuilt packages for windows and unix.

You could have functions for getting the canonical and absolute paths of a given function a la the java.io.File class. That way when you need to check for file system equivlance you explicitly pay for it in the canonical_name() function.

The way that I implemented a pathname class it essentially just held a string and had several manipulation and query functions.

I'm not sure who brought up URIs, but its seems that there might be a place for a standalone URI manipulation class. We can certainly all agree on the format of a URI, with an accessor to return the system-specific portion as a string.