title: Why is it that wcout << ""; is OK but wcout << string(); is not?
body: <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  
  using namespace std;
  
  int main()
  {
      wcout &lt;&lt; L"Hello";          // OK.
      wcout &lt;&lt; wstring(L"Hello"); // OK.
      wcout &lt;&lt; "Hello";           // OK. Why?
      wcout &lt;&lt; string("Hello");   // Error. Why?
  }
  </code></pre>
  
  <p>Why does <code>std::wcout</code> accept a narrow string literal as its argument but doesn't accept a narrow string object?</p>