Il faut que le compilateur puisse résoudre la surcharge, contre-exemple:
void f(int); void f(long); f('a'); // Erreur: le type est char, et on sait pas si on doit // convertir en int ou long