title: Using Partial Specialization in C++11
body: <p>I have the following code:</p>
  
  <pre><code>template&lt;class T, int I=44&gt; struct test {T j = I;};
  
  template&lt;int J&gt; struct test&lt;int, J&gt; {int j = J;};
  
  int main()
  {
    test&lt;55&gt; jj;
  
    std::cout &lt;&lt; jj.j &lt;&lt; std::endl;
    return(1);
  }
  </code></pre>
  
  <p>The compiler (clang) complains only about the line <code>test&lt;55&gt; jj</code></p>
  
  <p>I don't understand why? Is there a work around? </p>
  
  <p>And if it complains about that line, why doesn't it complain about the second template definition?</p>
  
  <p>Thanks in advance.</p>
  
  <p>The message is:</p>
  
  <pre><code>enable.cpp:17:8: error: template argument for template type parameter must be a type
  test&lt;55&gt; jj;
     ^~
  enable.cpp:9:16: note: template parameter is declared here
  template&lt;class T, int I=44&gt; struct test
  </code></pre>