title: using class name in a class template without template parameters
body: <p>the code comes from a C++ book as below:</p>
  
  <p>Why does this public member Link* next have no typename argument?</p>
  
  <pre><code>template &lt;typename E&gt; class Link {
  private:
      static Link&lt;E&gt;* freelist;
  public:
      E element;
      Link* next;  // this line confused me....
  
      Link(const E&amp; elemval, Link* nextval = NULL)
      {
          element = elemval; next = nextval;
      }
      Link(Link* nextval = NULL) { next = nextval; }
      void* operator new(size t){
          if (freelist == NULL) return ::new Link;
          Link&lt;E&gt;* temp = freelist;
          freelist = freelist-&gt;next;
          return temp; // Return the link
      }
  };
  </code></pre>
  
  <p>I think it should be <code>Link&lt;E&gt;* next</code>.</p>
  
  <p>Please tell me the reason it doesn't have a template argument.</p>