title: Template class partial specialization syntax
body: <p>The following basic example of partial template class specialization, taken from <a href="https://en.wikipedia.org/wiki/Partial_template_specialization" rel="nofollow">this wiki page</a> :</p>
  
  <pre><code>template &lt;typename Key, typename Value&gt;
  class KeyValuePair { /* something generic */ };
  
  template &lt;typename Key&gt;
  class KeyValuePair&lt;Key, bool&gt; { /* something specific to Value=bool */ };
  
  KeyValuePair&lt;int&gt; kvpi;
  </code></pre>
  
  <p>generates a compiler error :</p>
  
  <pre><code>prog.cpp:10:17: error: wrong number of template arguments (1, should be 2)  KeyValuePair&lt;int&gt; kvpi;
  </code></pre>
  
  <p>Why ? what am I doing wrong ?
  How a partial template class specialization should be declared and instantiated ?</p>
  
  <p>I am expecting variable <code>kvpi</code> to be a partially specialized template class instance of type <code>KeyValuePair&lt;int,bool&gt;</code>.</p>