Note that before C++11, the second output statement compiled but did something very unexpected:
It wrote a pointer value to "fstream2.tmp". The reason for the old behavior was that the following
member function was called (see Section 15.3.3, page 756):