Wybór funkcji przeładowanej w czasie jej wywoływania
Jeśli mamy kilka funkcji przeładowanych, to kompilator może mieć problem z wyborem właściwej wersji. Postępuje one według reguł podanej poniżej i w takiej właśnie kolejności
- ścisła zgodność typów lub dopasowanie na zasadzie utożsamiania typów (np. int, const int)
- zgodność przy wykorzystaniu konwersji standardowych w zakresie typów całkowitych rozszerzających pojemność typu (np. int na long) oraz konwersja float na double
- zgodność z wykorzystaniem pozostałych standardowych konwersji, (np. int na double, int* na void*)
- zgodność przy wykorzystaniu konwersji zdefiniowanych przez użytkownika
Jeśli okaże się, że dwie lub więcej funkcji jest na tym samym poziomie zgodności, to sygnalizowany jest błąd niejednoznaczności (błąd kompilacji)
Przykład - niejednoznaczność przeładowania.