Il y a en faite trois catégories pour les expressions en c++,
- lvalue qui désignent un objet ou une fonction;
- xvalue qui désignent un objet qui devrait approcher sa fin de vie;
- prvalue le reste
Les rvalue sont les xvalue et les prvalue ensemble. En général les traiter indifféremment n'a aucun impact, sauf pour le 'decltype' si c'est une xvalue alors on ajoute '&&' au type, et pour le traitement du type de e, si x c'est une prvalue on enlève l'éventuel premier 'const/volatile'.
Pour le terme référence universelle préfère forward reference qui a été retenu pour la norme.
Si tu veux jeter un oeil à la norme (un brouillon en accès libre) sans être totalement perdu, regardes spécifiquement:
- 3.10 §1 catégories des expressions
- 5 §5-6 ajustement du type des expressions
- 7.1.6.2 §4 règles de 'decltype'
- 7.1.6.4 §7 règles de 'auto'
- 14.8.2.1 §2-3-4 déduction des argumemts génériques
+1
-0