#include<sstream>
#include<vector>
class A
{
public:
std::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.assign(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;
std::basic_string<unsigned char> str;
a >> str;//(1)NG ->エラー
std::string str2;
a >> str2;//(2)OK
}