Это создает ссылку lvalue на существующую вещь:
const auto& ref = i;
Поэтому выражения &ref
и &i
будут давать тот же результат.
Это также верно для:
const auto& ref = (int&)i;
, что в основном то же самое.
Однако приведение к чему-либо, что не является ссылкой lvalue на T
(то есть на значение или на ссылку rvalueдругого типа!) должен создать временный;этот временный интервал продлевается на весь срок жизни, если он связан с ref
.Но теперь ref
не «ссылается» на i
, поэтому адрес результатов будет отличаться.
На самом деле это немного сложнее, чем , но вы понимаете,,Кроме того, не пишите такой код!int
не является short
, и вы не можете притворяться, что это так.