title: How can I force template parameter type to be signed?
body: <p>I'll use the following example to illustrate my question:</p>
  
  <pre><code>template&lt;typename T&gt;
  T diff(T a, T b)
  {
    return a-b;
  }
  </code></pre>
  
  <p>I expect this template function works only when the type T is signed. The only solution I can figure out is to use delete keyword for all the unsigned types:</p>
  
  <pre><code>template&lt;&gt;
  unsigned char diff(unsigned char,unsigned char) == delete;
  template&lt;&gt;
  unsigned char diff(unsigned char,unsigned char) == delete;
  </code></pre>
  
  <p>Are there other solutions?</p>