Pourquoi il n'est pas possible de convertir rvalues en lvalues? Il est cependant possible de faire une conversion dans la direction opposée. Techniquement, les valeurs ont une adresse mémoire, n'est-ce pas?
Vous pouvez:
int&& x = 3;
x
est maintenant une lvalue. Un soi-disant 'rvalue-reference' peut se lier à un temporaire, mais tout ce qui a un nom est une lvalue, donc vous devez le forward<>()
si vous besoin de sa valeur en retour.
Notez qu'en liant un temporaire à une rvalue-reference (ou une référence const) vous prolongez sa durée de vie. Techniquement, une distribution est possible, mais n'est pas recommandée, car les temporaires ont une durée de vie courte, vous obtenez donc généralement une référence pendante.