Ответ 1
К сожалению, у меня нет доступа к компилятору 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;
Попытайтесь увидеть, в какой момент все перестает работать. Затем откройте проблему.