Нет, он возвращает ссылку на локальный объект, точно так же, как и ссылку lvalue.
Просто верните его по значению, и пусть предполагаемый конструктор перемещения x заберет значение r.Когда вы возвращаете значение, возвращаемый объект является rvalue.
Если вам повезет, оптимизация NRVO включится (как и раньше) и в любом случае исключит копирование.