Да, это работает, спасибо. Но какой-то синтетический пример, ближе бы к реальности
Ничего синтетического, вполне реальный. Например, в boost::asio в примерах есть код, где в acceptor создают примерно так: acceptor(make_strand(io_context)), и уходит это все хозяйство по константной ссылке в конструктор. Если бы в плюсах не было бы rvalue, то пришлось бы копать кучу кода обмазанного шаблонами в попытке разобраться (можно ли так писать вообще или в конкретном коде ошибка), либо автору пришлось писать менее эффективный код с передачей по значению. Если тебе мало - то уже писал - unique_ptr, без rvalue до с++11 была кривая, приводящая к ошибкам поделка auto_ptr, которую сразу обзвали deprecated после нового стандарта (благодаря rvalue и более совершенному unique_ptr).