A std::stringstream
не должен быть вставлен в поток.Вот почему у вас есть метод str()
.
Наблюдаемое вами поведение связано с тем, что std::stringstream
имеет преобразование в void*
, что используется для проверки потока:
if(Foo) { // this uses the conversion to void*
}
В C ++ 11 это преобразование заменяется явным преобразованием в bool, что приводит к тому, что этот код не компилируется:
std::cout << Foo << std::endl;