Может ли кто-нибудь привести пример функции, перегруженной параметром ссылки rValue, отличным от конструктора перемещения или оператора присваивания перемещения, который в полной мере использует тот факт, что переданный аргумент является значением r? Таким образом, он выполняет функциональность версии функции с lvalue-параметром, но также делает что-то особенное в дополнение (исключительно потому, что передается rvalue), кроме того, что делает копирование или присваивание более эффективным. Возможно, сделать какое-то другое действие более эффективным? Еще лучше, возможно, что-то дополнительное, что необходимо в некоторых ситуациях, но не может быть выполнено с помощью lvalue? Пока не могу вспомнить ни одного примера.
Итак, я спрашиваю о перегрузке вашей собственной функции:
void ping (const Person& person) {
// do something
}
void ping (Person&& person) {
// do what the first ping does but take advantage of the fact that an rvalue (a temporary?) was passed
}