Изменить:. Как отмечают многие люди, перекрестная ссылка обычно не подходит для оптимизации для примитивных типов. Это прекрасно знать, так что спасибо всем! Тем не менее, мой вопрос был действительно больше о том, почему буквальные значения не могут быть переданы по ссылке, которые были рассмотрены принятым ответом. Ура!
(Простите мою наивность: я довольно новичок в С++.)
Чтобы избежать неэффективности копирования по значению при вызове функции (скажем, "fillRect" ), я хочу передать параметры по ссылке.
Если я укажу параметры как объявленные локальные переменные, он работает нормально. Но если я поставлю любые как "буквальные" целые числа, я получаю ошибку компиляции (без соответствующей функции).
void fillRect( int &x, int &y, int &width, int &height )
{
// do something
}
int x=10, y=20, w=100, h=80;
fillRect(x, y, w, h); // this compiles and works!
fillRect(x, y, 100, 80); // but this doesn't compile ... why?
Что дает?