Если вы хотите, чтобы у них был один и тот же адрес, вы всегда можете сделать const int &n2 = n1
.Если вы сделаете это по-другому, компилятор может заподозрить, что у вас есть собственная причина для этого.
Компилятору не разрешено угадывать, что вас беспокоит.Он реализует то, что вы пишете.Выполнение оптимизации в соответствии с вашим предложением подразумевает, что сравнение bool test = &n1 == &n2
даст другой результат.Вообще говоря, компилятору разрешено выполнять оптимизацию, если результат не изменяется.
Следует учитывать, что предыдущие компиляторы были намного менее эффективны, чем сейчас.Такая оптимизация или языковая функция должны были быть невозможны 30 лет назад.Таким образом, если это не оптимизация, это будет модификация языка, которая потенциально изменит поведение многих существующих программ.