title: How to resolve function overload ambiguity
body: <p>I have an overloaded pair of functions that take a single argument.  One takes a <code>uint64_t</code>.  The other takes an <code>int64_t</code>.  When I pass a <code>uint32_t</code> to the function it is correctly flagged as ambiguous.</p>
  
  <p>How do I resolve this ambiguity without resorting to templates?  I can write a shallow wrapper that uses type traits to resolve it, but I would rather not.  I would prefer for signed types to resolve to the signed overload, and unsigned types to resolve to the unsigned overload.</p>
  
  <p>Also, I would rather not have an overload for each integer type.</p>