Я пытаюсь понять метод разрешения перегрузки.
Почему это неоднозначно:
void func(double, int, int, double) {}
void func(int, double, double, double) {}
void main()
{
func(1, 2, 3, 4);
}
но это не?
void func(int, int, int, double) {}
void func(int, double, double, double) {}
void main()
{
func(1, 2, 3, 4);
}
В первом случае есть 2 совпадения точных параметров и 2 конверсии против 1 точного соответствия и 3 конверсии, а во втором случае - 3 точных совпадения и 1 конверсия против 1 точных совпадений и 3 конверсии.
Итак, почему одно двусмысленное, а другое нет? Какая здесь логика?