Добрый день. Если я не ошибаюсь, то lvalue-ссылка
&r
может ссылаться на адрес памяти именованного объекта (переменной). Так вот, rvalue-ссылка
&&rr
это тоже самое что и lvalue-ссылка, только при этом может ссылаться на временный объект? (например литерал
5
)
показываю на примере то что они похожи:
int x = 5;
int &r = x; //lvalue-ссылка
r = 10;
cout << x; //в консоли: 10
//другой пример:
int x = 5;
int &&rr = move(x); //rvalue-ссылка
rr = 10;
cout << x; //в консоли: 10
показываю на примере что может ссылаться на временный объект:
int x = 5;
inr &r = x; //work
int &r = 10; //nope
int &&rr = x; //nope
int &&rr = move(x); //work
int &&rr = 10; //work
Кто нибудь может пояснить? Если они почти одинаково работают, то в чем профит использования rvalue ссылок в семантике перемещения. Тема для меня очень сложная. Не могу понять концепцию..