Рассмотрим следующий код:
#include <sstream>
#include <iostream>
class Foo : public std::stringstream {
public:
~Foo() { std::cout << str(); }
};
int main()
{
Foo foo;
foo << "Test1" << std::endl;
Foo() << "Test2" << std::endl;
return 0;
}
Когда я выполняю это, я получаю:
004177FC
Test1
Я не понимаю, почему второй пример дает мне тарабарщину. Временное должно существовать до тех пор, пока не будет вычислено все выражение, так почему же оно не ведет себя так же, как в первом примере?