Если код компилируется , есть ли разница между:
A && a = .....
и
A & a = .....
? a
- это локальная переменная в функции или методе, а не параметр.
Если присвоить rvalue-reference имя (a
), оно фактически станет lvalue для остальной области видимости? то есть даже с предыдущей формой вам придется использовать move(a)
, чтобы включить воровство при передаче a
другой функции?
Я понимаю, что могут быть другие проблемы со второй формой, которые мешают компиляции, например, вы не можете иметь (неконстантную) ссылку на временную. Так что, да, мне любопытно узнать все различия, но сначала я хочу подтвердить, что они полностью эквивалентны для остальной части объема.
Обновление: в качестве примера этой «временной» проблемы, которую @KerrekSB повторил, иногда вы должны сделать простую ссылку const
. В таком случае, мой вопрос, есть ли разница между:
const A && a = .....
и
const A & a = .....