--- path.hpp.orig 2008-04-29 16:46:51.984458900 +0200 +++ path.hpp 2008-11-24 14:36:32.609375000 +0100 @@ -691,7 +691,7 @@ template inline bool is_separator( typename Path::string_type::value_type c ) { - return c == slash::value + return c == (typename Path::string_type::value_type) slash::value # ifdef BOOST_WINDOWS_PATH || c == path_alt_separator::value # endif @@ -711,11 +711,11 @@ // case: "//" if ( end_pos == 2 - && str[0] == slash::value - && str[1] == slash::value ) return 0; + && str[0] == (typename String::value_type) slash::value + && str[1] == (typename String::value_type) slash::value ) return 0; // case: ends in "/" - if ( end_pos && str[end_pos-1] == slash::value ) + if ( end_pos && str[end_pos-1] == (typename String::value_type) slash::value ) return end_pos-1; // set pos to start of last element @@ -729,7 +729,7 @@ # endif return ( pos == String::npos // path itself must be a leaf (or empty) - || (pos == 1 && str[0] == slash::value) ) // or net + || (pos == 1 && str[0] == (typename String::value_type) slash::value) ) // or net ? 0 // so leaf is entire string : pos + 1; // or starts after delimiter } @@ -760,22 +760,22 @@ typename String::size_type cur(0); // deal with // [network] - if ( size >= 2 && src[0] == slash::value - && src[1] == slash::value + if ( size >= 2 && src[0] == (typename String::value_type) slash::value + && src[1] == (typename String::value_type) slash::value && (size == 2 - || src[2] != slash::value) ) + || src[2] != (typename String::value_type) slash::value) ) { cur += 2; element_size += 2; } // leading (not non-network) separator - else if ( src[0] == slash::value ) + else if ( src[0] == (typename String::value_type) slash::value ) { ++element_size; // bypass extra leading separators while ( cur+1 < size - && src[cur+1] == slash::value ) + && src[cur+1] == (typename String::value_type) slash::value ) { ++cur; ++element_pos; @@ -789,9 +789,9 @@ // find the end while ( cur < size # ifdef BOOST_WINDOWS_PATH - && src[cur] != colon::value + && src[cur] != (typename String::value_type) colon::value # endif - && src[cur] != slash::value ) + && src[cur] != (typename String::value_type) slash::value ) { ++cur; ++element_size; @@ -800,7 +800,7 @@ # ifdef BOOST_WINDOWS_PATH if ( cur == size ) return; // include device delimiter - if ( src[cur] == colon::value ) + if ( src[cur] == (typename String::value_type) colon::value ) { ++element_size; } # endif @@ -820,20 +820,20 @@ # ifdef BOOST_WINDOWS_PATH // case "c:/" if ( size > 2 - && s[1] == colon::value - && s[2] == slash::value ) return 2; + && s[1] == (typename String::value_type) colon::value + && s[2] == (typename String::value_type) slash::value ) return 2; # endif // case "//" if ( size == 2 - && s[0] == slash::value - && s[1] == slash::value ) return String::npos; + && s[0] == (typename String::value_type) slash::value + && s[1] == (typename String::value_type) slash::value ) return String::npos; // case "//net {/}" if ( size > 3 - && s[0] == slash::value - && s[1] == slash::value - && s[2] != slash::value ) + && s[0] == (typename String::value_type) slash::value + && s[1] == (typename String::value_type) slash::value + && s[2] != (typename String::value_type) slash::value ) { typename String::size_type pos( s.find( slash::value, 2 ) ); @@ -841,7 +841,7 @@ } // case "/" - if ( size > 0 && s[0] == slash::value ) return 0; + if ( size > 0 && s[0] == (typename String::value_type) slash::value ) return 0; return String::npos; } @@ -895,7 +895,7 @@ detail::leaf_pos( m_path, m_path.size() ) ); bool leaf_was_separator( m_path.size() - && m_path[end_pos] == slash::value ); + && m_path[end_pos] == (typename String::value_type) slash::value ); // skip separators unless root directory typename string_type::size_type root_dir_pos( detail::root_directory_start @@ -903,7 +903,7 @@ for ( ; end_pos > 0 && (end_pos-1) != root_dir_pos - && m_path[end_pos-1] == slash::value + && m_path[end_pos-1] == (typename String::value_type) slash::value ; --end_pos ) {} @@ -920,7 +920,7 @@ && (itr.m_name[0] == slash::value # ifdef BOOST_WINDOWS_PATH || itr.m_name[itr.m_name.size()-1] - == colon::value + == (typename String::value_type) colon::value # endif ); ++itr ) {} @@ -935,12 +935,12 @@ return ( itr.m_pos != m_path.size() && ( ( itr.m_name.size() > 1 - && itr.m_name[0] == slash::value - && itr.m_name[1] == slash::value + && itr.m_name[0] == (typename string_type::value_type) slash::value + && itr.m_name[1] == (typename string_type::value_type) slash::value ) # ifdef BOOST_WINDOWS_PATH || itr.m_name[itr.m_name.size()-1] - == colon::value + == (typename string_type::value_type) colon::value # endif ) ) ? *itr @@ -1003,9 +1003,9 @@ { if ( # ifdef BOOST_WINDOWS_PATH - *(m_path.end()-1) != colon::value && + *(m_path.end()-1) != (typename string_type::value_type) colon::value && # endif - *(m_path.end()-1) != slash::value ) + *(m_path.end()-1) != (typename string_type::value_type) slash::value ) { m_path += slash::value; } @@ -1035,9 +1035,9 @@ ( const value_type * next_p ) { // ignore escape sequence on POSIX or Windows - if ( *next_p == slash::value - && *(next_p+1) == slash::value - && *(next_p+2) == colon::value ) next_p += 3; + if ( *next_p == (typename string_type::value_type) slash::value + && *(next_p+1) == (typename string_type::value_type) slash::value + && *(next_p+2) == (typename string_type::value_type) colon::value ) next_p += 3; // append slash::value if needed if ( !empty() && *next_p != 0