Z tego co wiem, przy wybieraniu między dwoma kandydującymi funkcjami kompilator będzie preferował ten, w którym jego najsłabszy mecz jest silniejszy. Na przykład jeśli mam:Przeciążanie rozdzielczości
void boo(int i, char c);
void boo(double d, int i);
dla następującego kodu:
float f = 1.0;
char c = 'c';
boo(f,c);
drugi boo
powinny być preferowane, ponieważ jego najsłabszy mecz jest promocja podczas gdy pierwsza jest standardowy typ konwersji.
Ale gdy próbuję go (używając gcc) skompilować, otrzymuję:
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.
Jakieś pomysły?
mam pomysł. Odczytaj ten komunikat o błędzie, aż stanie się jasne, że standard C++ mówi, że jest to niejednoznaczne. –
+1 dla programisty, który napisał komunikat o błędzie. – JNL