Lvalue C++ против rvalue. Объяснение с аналогией и исходным кодом.

Аналогия

Группа воров хочет ограбить банк.

Допустим, банк находится во Флориде. Адрес банка: Флорида, Feather Sound, 4837 Maryland Avenue.

Туда идет группа воров, забирает все деньги и убегает.

Пока они убегают, на их грузовик падает мешок с деньгами.

Никто не знает, откуда взялась эта сумка, даже они.

Но у них есть сумка с деньгами. Другими словами, они владеют им.

После их кражи прошу вас посетить банк и забрать для меня немного денег.

Когда вы доберетесь до банка, ваш ответ будет примерно таким.

Эй, этот банк ограбили. Там нет денег.

Однако мы ничего не знаем о мешке, упавшем с неба. Тот, что принадлежит ворам.

Сумка анонимна, потому что мы не можем ее идентифицировать. Мы не можем определить его происхождение.

Банк является аналогом lvalue. Мы можем идентифицировать банк по адресу.

lvalue — это то, что мы можем идентифицировать по адресу.

У банка по этому адресу больше нет денег. Воры украли.

Мешок, упавший с неба, является аналогом rvalue. Мы не можем его идентифицировать.

Сумка с наличными — анонимный ресурс.

Код