title: Is overloading on all of the fundamental integer types is sufficient to capture all integers?
body: <p>Let's say I have function overloads for all standard integer types:</p>
  
  <pre><code>void foo( char );
  void foo( signed char );
  void foo( short );
  void foo( int );
  void foo( long );
  void foo( long long );
  // .... all unsigned variants as well
  </code></pre>
  
  <p>Is it possible that those overloads would fail to find proper overload for types like <code>int8_t</code> or something like that? Is there a portable way to handle such overloads?</p>
  
  <p>How about references?</p>
  
  <p>To clarify the question: it comes from discussion of this question <a href="https://stackoverflow.com/questions/41551313/why-is-int8-t-read-as-a-character?noredirect=1#comment70309971_41551313">Why is int8_t read as a character?</a> and claims that there could be compiler generated integer types that would be not an alias to fundamental C++ types. So in such case overloads for all fundamental case may not accept it. On another way I cannot provide overload for <code>int8_t</code> as on many platforms it is just an alias and will get error for redefinition of existing overload.</p>