Lvalue C++ против rvalue. Объяснение с аналогией и исходным кодом.
Аналогия
Группа воров хочет ограбить банк.
Допустим, банк находится во Флориде. Адрес банка: Флорида, Feather Sound, 4837 Maryland Avenue.
Туда идет группа воров, забирает все деньги и убегает.
Пока они убегают, на их грузовик падает мешок с деньгами.
Никто не знает, откуда взялась эта сумка, даже они.
Но у них есть сумка с деньгами. Другими словами, они владеют им.
После их кражи прошу вас посетить банк и забрать для меня немного денег.
Когда вы доберетесь до банка, ваш ответ будет примерно таким.
Эй, этот банк ограбили. Там нет денег.
Однако мы ничего не знаем о мешке, упавшем с неба. Тот, что принадлежит ворам.
Сумка анонимна, потому что мы не можем ее идентифицировать. Мы не можем определить его происхождение.
Банк является аналогом lvalue. Мы можем идентифицировать банк по адресу.
lvalue — это то, что мы можем идентифицировать по адресу.
У банка по этому адресу больше нет денег. Воры украли.
Мешок, упавший с неба, является аналогом rvalue. Мы не можем его идентифицировать.
Сумка с наличными — анонимный ресурс.