Il vaut mieux lire l'un des nombreux articles dédiés en effet, mais de manière très résumée : les r-value references permettent d'optimiser l'utilisation de ce que l'on appelle les temporaires non-nommés. Comme ces variables sont volatiles et non stockées, cela permet de voler leur contenu plutôt que de le copier. Ce qui, par exemple pour std::vector, permet de créer une copie avec 3 affectations de pointeurs plutôt qu'une grosse réallocation de mémoire + une copie de tous les objets.