VC6だとunsigned char* から char* に変換できませんとエラーが
でるんだが、VC++.NETだとエラーにならない。...バグなのかなぁ?

#include<sstream>
#include<vector>
using namespace std;
struct a
{
stringstream _Base;
template<typename _Alloc> void operator>>(std::basic_string<unsigned char, std::char_traits<unsigned char>, _Alloc>& str)
{
std::basic_string<char, std::char_traits<char>,_Alloc > strbuf;
( (*this) >> strbuf);//////ここ
str= reinterpret_cast<const unsigned char*>(strbuf.c_str());
}
template<typename _Alloc> void operator>>(std::basic_string<char, std::char_traits<char>, _Alloc>& str)
{
_Base >> str;
}
};

int main()
{
a A;
basic_string<unsigned char> str;
A >> str;
}