non-decimal basefield for negative integers

おろ?すっとりーむの話だけれど,もしかして decimal 以外の基数って負数想定されてなかったりする?

std::stringstream ss;
ss << std::oct << -12345;
std::cout << ss.str() << std::endl;

そんなことどっかに書いてあったっけか?
しかも

std::string str( "-12345" );
std::stringstream ss( str );
long l;
ss >> std::oct >> l;
std::cout << l << std::endl; // "-5349"

入力ストリームのほうでは,ちゃんと負数に対しても non-decimal な基数指定しても機能してるんだけどにゃー.