The concept seems hard to sink in :(
Let us assume only the case of normal functions and not member function.
Functions can be overloaded. As long as my pointer, which is going to make the function call has been declared with the right type and number of arguments, it must have no issues making the call.
In anycase, we can't make function calls from void pointers. So why can't i initially take the address of that kind of a function (overloaded) into a void pointer and then recast it back to the correct type of pointer that fits the type and number of arguments as that of the overloaded function and then make the call???