title: Passing type parameter to self-referential pointer
body: <pre><code>template &lt;class T&gt;
  class Node {
      private:
          T m_value;
          //Node* m_ptr;    //(1)
          //Node&lt;T&gt;* m_ptr; //(2)
  };
  </code></pre>
  
  <p>Can someone explain what is the difference between the above two statements (1) and (2)? Both statements seem to compile, but I can't seem to find what the ISO C++ says about them. </p>