inline bool is_windows_drive(const std::string &p)
{ return (p.size()==2 && ((p[0]>='A' && p[0]<='Z') || (p[0]>='a' && p[0]<='z')) && p[1]==':'); }
#endif
inline bool is_windows_drive(const std::string &p)
{ return (p.size()==2 && ((p[0]>='A' && p[0]<='Z') || (p[0]>='a' && p[0]<='z')) && p[1]==':'); }
#endif
string::size_type slash = (separators.empty() ? string::npos : separators.front());
if(is_windows_drive(path.substr(0, slash)))
{
string::size_type slash = (separators.empty() ? string::npos : separators.front());
if(is_windows_drive(path.substr(0, slash)))
{