У меня есть функция, которая выдает ошибку «не могу преобразовать из 'int' в 'int &'», когда я пытаюсь ее скомпилировать.
int& preinc(int& x) {
return x++;
}
Если я замените x ++ на x, он скомпилируется, но я не уверен, как это отличает его. Я думал, что x ++ возвращает x до того, как увеличивает x, поэтому не должно ли «return x ++» быть таким же, как «return x» в отношении того, что возвращает preinc? Если проблема в том, что оператор ++ действует на x, то почему он не генерирует никаких ошибок, если я помещаю строку «x ++» до или после оператора return или заменяю x ++ на ++ x?