title: Why can't enable_if be used on specialized parameter?
body: <p>I am trying to create a partial specialization for integral types. My idea was to do something similar to:</p>
  
  <pre><code>#include &lt;type_traits&gt;
  
  template &lt;typename T&gt;
  struct Class {
  };
  
  template &lt;typename T&gt;
  struct Class&lt;typename std::enable_if&lt;std::is_integral&lt;T&gt;::value, T&gt;::type&gt; {
  };
  </code></pre>
  
  <p>This however leads to the following error:</p>
  
  <pre><code>error: template parameters not deducible in partial specialization:
  struct Class&lt;typename std::enable_if&lt;std::is_integral&lt;T&gt;::value, T&gt;::type&gt; {
         ^
  note: 'T'
  </code></pre>
  
  <p>It does work if I use an extra template parameter:</p>
  
  <pre><code>#include &lt;type_traits&gt;
  
  template &lt;typename T, typename Enable = void&gt;
  struct Class {
  };
  
  template &lt;typename T&gt;
  struct Class&lt;T, typename std::enable_if&lt;std::is_integral&lt;T&gt;::value&gt;::type&gt; {
  };
  </code></pre>
  
  <p>Why do I need the extra template parameter?</p>