Я наткнулся на странное поведение, которое сначала просто не мог объяснить (см. ideone):
#include
#include
#include
int main() {
std::cout << "Reference : "
<< (void const*)"some data"
<< "\n";
std::ostringstream s;
s << "some data";
std::cout << "Regular Syntax: " << s.str() << "\n";
std::ostringstream s2;
std::cout << "Semi inline : "
<< static_cast(s2 << "some data").str()
<< "\n";
std::cout << "Inline : "
<< dynamic_cast(
std::ostringstream() << "some data"
).str()
<< "\n";
}
Получает вывод:
Reference : 0x804a03d
Regular Syntax: some data
Semi inline : some data
Inline : 0x804a03d
Удивительно, но в последнем броске мы имеем адрес, а не содержимое!
Почему так?