Sto cercando di capire il metodo di risoluzione di sovraccarico.Come viene determinata l'ambiguità nell'algoritmo di risoluzione del sovraccarico?
Perché questo è ambiguo:
void func(double, int, int, double) {}
void func(int, double, double, double) {}
void main()
{
func(1, 2, 3, 4);
}
ma questo non lo è?
void func(int, int, int, double) {}
void func(int, double, double, double) {}
void main()
{
func(1, 2, 3, 4);
}
Nel primo caso ci sono 2 parametri corrispondenze esatte e 2 conversioni contro 1 corrispondenza esatta e 3 conversioni, e nel secondo caso ci sono 3 corrispondenze esatte e 1 conversione contro 1 corrispondenze esatte e 3 conversioni.
Quindi perché uno è ambiguo e uno no? Qual è la logica qui?
Caso interessante, ma puramente accademico. Se vedessi questo usato nel codice di produzione, qualcuno verrebbe licenziato. – Blindy
C++ ISO potrebbe parlarne. Qualcuno potrebbe darci un riferimento più tardi. –
@Blindy Parlate con lui, sì. In modo serio, sì. Ma licenziarlo? – glglgl