Compiler calls int implementation because int* type is unsigned int not just int
Now try changing
void fun(int i)
{
std::cout<<"Int Overload called";
}
to
void fun(unsigned int i)
{
std::cout<<"Int Overload called";
}
The compiler cribs and says
'error C2668: 'fun' : ambiguous call to overloaded function'
Good question