title: make a variadic constructor for signed and unsigned variables using enable_if
body: <p>I want to make a constructor for a class, using any integral type, but differentiate between signed and unsigned. I don't want this to be a template on the class itself. The following is not working. Visual Studio is just saying no arguments will match.</p>
  
  <pre><code>class Thing{
  public:
      template&lt;typename Integral&gt;
      Thing(
          typename std::enable_if&lt;
              std::is_integral&lt;Integral&gt;::value &amp;&amp;
              !std::is_same&lt;Integral,bool&gt;::value &amp;&amp;
              std::is_signed&lt;Integral&gt;::value
              ,Integral
          &gt;::type num
      ){
          //constructor using signed variable as input
      }
      template&lt;typename Integral&gt;
      Thing(
          typename std::enable_if&lt;
              std::is_integral&lt;Integral&gt;::value &amp;&amp;
              !std::is_same&lt;Integral,bool&gt;::value &amp;&amp;
              !std::is_signed&lt;Integral&gt;::value//notice this is different
              ,Integral
          &gt;::type num
      ){
          //constructor using unsigned variable as input
      }
  };
  </code></pre>