Неоднозначный вызов функции при перегрузке ссылочными типами в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неоднозначный вызов функции при перегрузке ссылочными типами в C++

Сообщение Anonymous »

Я перегружаю функцию f с двумя разными типами параметров.
В source.h я объявляю две функции.

Код: Выделить всё

void f(int&); void f(int);
Итак, у меня есть две функции: одна принимает ссылочный тип, а другая — значение (передача по ссылке и передача по значению соответственно).< /p>
В source.cpp я их определяю

Код: Выделить всё

void f(int& a){
a + 1;
}

void f(int a){
a + 1;
}
Затем в основной функции

Код: Выделить всё

int main() {
int a = 1;
int& b = a;
f(b);
}
Компилятор (clang-tidy) обнаруживает проблему: вызов f неоднозначен. Почему это происходит? Являются ли int& и int двумя разными типами? Если да, то почему компилятор не обнаруживает проблему в source.cpp, где определены функции?

Подробнее здесь: https://stackoverflow.com/questions/781 ... types-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»