title: C++ string forward declaration is ambigious
body: <p>I tried to forward declare std::string but it does not seem to work.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>namespace std
  {
      template&lt;typename&gt;
      class allocator;
  
      template&lt;class _CharT&gt;
      struct char_traits;
  
      template &lt;typename _CharT, typename _Traits = char_traits&lt;_CharT&gt;, typename _Alloc = allocator&lt;_CharT&gt;&gt;
      class basic_string;
  
      typedef basic_string&lt;char&gt; string;   
  }
  </code></pre>
  
  <p>Including string results in this error: <code>reference to ‘basic_string’ is ambiguous</code>. Is there any way forward decleare string without errors?</p>