Originariamente inviato da Kaamos
Sono le invocazioni ad essere ambigue lì, non le firme dei metodi: non trovando alcun metodo che accetti due int (5 è un letterale di tipo int), il linguaggio cerca di convertirlo al posto tuo, ma giustamente non sa cosa fare e la compilazione fallisce. Nell'ultimo esempio da te mostrato, dovresti essere tu a specificare i tipi dei parametri che stai passando: per chiamare il primo dovresti scrivere:
codice:
pippo(5.0, 5.0f)
mentre per chiamare il secondo:
codice:
pippo(5.0f, 5.0)
Questo potrebbe esserti utile: http://docs.oracle.com/javase/tutori...datatypes.html

In alternativa ai letterali, c'è sempre il casting esplicito:
codice:
pippo((float) 5, (double) 5)
Allora io sto realizzando un linguaggio di programmazione e devo riuscire a capire se appunto ci sono ambiguità nelle invocazioni.Quindi come fa java, anche il mio linguaggio deve essere in grado di segnalare l'errore.