У меня вопрос о стандартном поведении вызова tellp
на пустом ostringstream
. У меня есть функция foo, которая вызывает tellp
первым делом:
void foo(std::ostream& os)
{
std::ostream::pos_type pos = os.tellp();
// do some stuff.
}
int main()
{
std::ostringstream os;
foo(os);
}
В Visual Studio 2005 вызов этой функции с вновь созданным и пустым ostringstream
приводит к тому, что для переменной pos
устанавливается недопустимое значение pos_type
, которое в Visual Studio 2005 устанавливается на pos_type(_BADOFF)
.
ofstream
не имеет такого поведения, где tellp
возвращает pos_type(0)
, что является действительным pos_type
.
Это стандартное поведение? Соответствует ли это поведение другим компиляторам?