Стандарт ISO говорит, что это лучше всего:
Не должно быть ссылок на ссылки, массивов ссылок и указателей на ссылки.
Мне не нравится логика, которую многие люди используют здесь, что вы не можете сделать это, потому что ссылка "не гарантированно будет где-то просто указателем". Точно так же, как int x
может быть только регистром процессора без адреса, но волшебным образом становится областью памяти при использовании & x
, компилятор все же может иметь возможность разрешить то, что вы хотите.
В прошлом многие компиляторы допускали именно то, что вы просите, например,
int x, y;
int &r = x;
&r = &y; // use address as an lvalue; assign a new referent
Я только что проверил, и GCC скомпилирует его, но с строго сформулированным предупреждением, и полученная программа не работает.