I just signed up just to answer this question.
I went through this post some time ago and used the solution posed, even though I didn't like it very much. It was a mistake.
This solution can cause deadlock of the system after some time in a random way, very difficult to debug.
I propose the following solution:
create the file "compatible_sstream.h":
#pragma push_macro("str")
#undef str
#include <sstream>
#pragma pop_macro("str")
replace #include <sstream>
with #include "compatible_sstream.h"
in
all the other files.
wrap all calls to std::ostringstream::str
in parentheses as in the example:
std::ostringstream foo()
{
// ...
}
void main()
{
// ...
std::cout << (foo().str)() << std::endl;
// ...
}
Apologies in advance if I have not followed any of the posting rules correctly.