title: Template <class = void*>, would appreciate an explanation
body: <p>I am reading a book where the guy makes a linked list
  he creates a class like this</p>
  
  <pre><code>template &lt; class extra_info = void*&gt;
  class NavGraphNode : public GraphNode
  {
  protected:
  //the node's position
  Vector2D m_vPosition;
  
  extra_info m_ExtraInfo;
  public:
  /*INTERFACE OMITTED */
  };
  </code></pre>
  
  <p>He explains extra_info could be for example an enumerated value or a pointer
  to the instance the node is twinned with. But I don't really understand the first line,
  reading for example
  <a href="http://www.cplusplus.com/doc/tutorial/templates/" rel="nofollow">http://www.cplusplus.com/doc/tutorial/templates/</a>
  it seems that if you specify the type (and why not void* extra_info?)
  then why use a template in the first place?</p>
  
  <p>Thanks!</p>