title: What's the difference between these two typedefs?
body: <p>What is the difference between the two marked lines in the code below?</p>
  
  <pre><code>template &lt;const char *N&gt; struct A {
      static const char *p;
      };
  
  template &lt;class T&gt; struct B {
      static const char c[1];
      typedef A&lt;B&lt;T&gt;::c&gt; C;   // &lt;---
      // typedef A&lt;c&gt; C;      // &lt;---
      };
  </code></pre>
  
  <p>Error that i recived is:</p>
  
  <blockquote>
    <p>test_t.C: In instantiation of 'const char B::c [1]':<br>
    test_t.C:7:   instantiated from here<br>
    test_t.C:7: internal compiler error: in instantiate_decl, at cp/pt.c:15628<br>
    Please submit a full bug report,<br>
    with preprocessed source if appropriate.<br>
    See <a href="http://gcc.gnu.org/bugs.html" rel="nofollow">http://gcc.gnu.org/bugs.html</a> for instructions.  </p>
  </blockquote>