Per quanto ne so, quando si sceglie di scegliere tra due funzioni candidate, il compilatore preferirà quella con la corrispondenza più debole. Per esempio, se ho:Risoluzione di sovraccarico
void boo(int i, char c);
void boo(double d, int i);
per il seguente codice:
float f = 1.0;
char c = 'c';
boo(f,c);
la seconda boo
dovrebbe essere preferito perché la sua partita più debole è la promozione, mentre il primo è la conversione di tipo standard.
Ma quando provo a compilare (usando gcc), ottengo:
error: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second.
Tutte le idee?
Ho un'idea. Leggi quel messaggio di errore più e più volte finché non diventa chiaro che lo standard C++ dice che questo è ambiguo. –
+1 per lo sviluppatore che ha scritto il messaggio di errore. – JNL