Ваша идиома неверна.
Глобальная функция в принципе никогда не должна возвращать ссылку - кроме как, например, скрытие глобальной переменной. Этот случай приемлем, однако использование сомнительно: если переменная уже была глобальной, зачем скрывать ее за вызовом функции?
Если ваша цель - изменить аргумент, зачем давать возвращаемое значение? Полезно только если вы, например, вернуть старое значение - и это должно быть сделано «по значению», а не «по ссылке».
<code>
int g(int& arg) {
int oldarg( arg );
// maybe modify arg
// return old value of arg
return oldarg;
}
или:
<code>
const int& g(int& arg) {
static int accumulator;
accumulator += arg;
return accumulator;
}
Где, в последнем случае, передача аргумента по ссылке и / или возврат аккумулятора по ссылке не требуется.
ура,
ч.