title: How does std::stringstream handle wchar_t* in operator<<?
body: <p>Given that the following snippet doesn't compile:</p>
  
  <pre><code>std::stringstream ss;
  ss &lt;&lt; std::wstring(L"abc");
  </code></pre>
  
  <p>I didn't think this one would, either:</p>
  
  <pre><code>std::stringstream ss;
  ss &lt;&lt; L"abc";
  </code></pre>
  
  <p>But it does (on VC++ at least). I'm guessing this is due to the following <code>ostream::operator&lt;&lt;</code> overload:</p>
  
  <pre><code>ostream&amp; operator&lt;&lt; (const void* val );
  </code></pre>
  
  <p>Does this have the potential to silently break my code, if I inadvertently mix character types?</p>