К сожалению, у меня нет доступа к компилятору MSVC для проверки.
Из моего прошлого опыта работы с инструментами Microsoft кажется, что Microsoft рассматривает определения и стандарты языка как нечто большее, чем грубое руководство. (Я потратил много времени на проекты, только чтобы обнаружить, что Microsoft сломала традицию с чем-то таким базовым, как C99.)
Учитывая эту прискорбную ситуацию, я предлагаю вам поэкспериментировать с серией тривиальных программ. Вещи как:
std::ostringstream() o;
o.seekp( 0, std::ios_base::cur ) << "foo";
cout << "Test1: " << o << endl;
Или, возможно:
std::ostringstream() o;
cout << "Test2: " << typeid(o).name() << endl;
cout << "Test3: " << typeid(o.seekp( 0, std::ios_base::cur )).name() << endl;
Попробуй посмотреть, в какой момент вещи перестают работать. Тогда обойдите проблему оттуда.