My code looks something like this: try{ fs::path full_path (fs::initial_path()); full_path = fs::system_complete(fs::path(filePath, fs::native)); fs::create_directories(full_path); INFO << "Directory successfully created: " << full_path.native_directory_string() << std::endl; retval = true; }catch(std::exception& ex){ WARN << "Could not create directory: " << filePath << " " << ex.what() << std::endl; } return retval; ========== When filePath is "c:\a\b\", boost throws an exception saying invalid path name c:\a\b\ in path "c:\a\b\" when filePath is "c:\\a\\b\\", boost throws exactly the same exception when filePath is "c:/a/b/", the exception string changes saying invalid path name "c:" in path "c:/a/b/" What am I doing wrong? -Vivek