Path relative(const Path &path, const Path &base)
{
+ if(path.is_absolute()!=base.is_absolute())
+ throw invalid_argument("FS::relative");
+
Path::Iterator i = path.begin();
Path::Iterator j = base.begin();
for(; (i!=path.end() && j!=base.end() && *i==*j); ++i, ++j) ;
int descendant_depth(const Path &path, const Path &parent)
{
+ if(path.is_absolute()!=parent.is_absolute())
+ throw invalid_argument("FS::descendant_depth");
+
Path::Iterator i = path.begin();
Path::Iterator j = parent.begin();
for(; (i!=path.end() && j!=parent.end() && *i==*j); ++i, ++j) ;