title: std::ostringstream printing the address of the c-string instead of its content
body: <p>I have stumbled on a weird behavior that I just could not explain at first (see <a href="http://ideone.com/DSPmM">ideone</a>):</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;sstream&gt;
  #include &lt;string&gt;
  
  int main() {
    std::cout &lt;&lt; "Reference     : "
              &lt;&lt; (void const*)"some data"
              &lt;&lt; "\n";
  
    std::ostringstream s;
    s &lt;&lt; "some data";
    std::cout &lt;&lt; "Regular Syntax: " &lt;&lt; s.str() &lt;&lt; "\n";
  
    std::ostringstream s2;
    std::cout &lt;&lt; "Semi inline   : "
              &lt;&lt; static_cast&lt;std::ostringstream&amp;&gt;(s2 &lt;&lt; "some data").str()
              &lt;&lt; "\n";
  
    std::cout &lt;&lt; "Inline        : "
              &lt;&lt; dynamic_cast&lt;std::ostringstream&amp;&gt;(
                   std::ostringstream() &lt;&lt; "some data"
                 ).str()
              &lt;&lt; "\n";
  }
  </code></pre>
  
  <p>Gives the output:</p>
  
  <pre><code>Reference     : 0x804a03d
  Regular Syntax: some data
  Semi inline   : some data
  Inline        : 0x804a03d
  </code></pre>
  
  <p>Surprisingly, in the last cast we have the address, and not the content!</p>
  
  <p>Why is that so ?</p>