title: disable code from compiling for non integral types
body: <pre><code>#include &lt;iostream&gt;
  #include &lt;type_traits&gt;
  #include &lt;math.h&gt; 
  
  template&lt;typename T&gt;
  void Foo(T x)
  {
      if(std::is_integral&lt;T&gt;::value)
      {
          rint(x);
      }
      else
      {
          std::cout&lt;&lt;&quot;not integral&quot;&lt;&lt;std::endl;
      }
  }
  int main()
  {
      Foo(&quot;foo&quot;);
      return 0;
  }
  </code></pre>
  <p>Does not compile because there is no suitable <code>rint</code> overload for <code>const char*</code>, but <code>rint</code> will never be invoked with <code>const char*</code> because it's not an integral type. How can I inform the compiler about this</p>