title: How can I avoid using the type name type
body: <p>I have a declaration in my base class:</p>
  
  <pre><code>template&lt;class PROTOCOL&gt;
  static Packet* serialize(uint packetId, QVariantHash data = QVariantHash());
  </code></pre>
  
  <p>Then when I inherit from the base class, I can use the static method like so:</p>
  
  <pre><code>GameProtocol::serialize&lt;GameProtocol&gt;(0); // This works fine
  </code></pre>
  
  <p>My question is, what do I have to change in order to make the call <code>GameProtocol::serialize(0)</code> work (ie. without the template declaration).</p>
  
  <p>I would like to keep the method static, as it simplifies other areas of the base class. I understand this makes it difficult as static methods cannot be overridden in C++, but there surely must be a way using template magic.</p>