31
When compiling
void ambig( signed long) { }
void ambig(unsigned long) { }
int main(void) { ambig(-1); return 0; }
I get
error C2668: 'ambig' : ambiguous call to overloaded function
could be 'void ambig(unsigned long)'
or 'void ambig(long)'
while trying to match the argument list '(int)'
I know I can 'fix' it by saying -1L instead of -1, but why/how exactly is this considered ambiguous in the first place?