De ce lien , il est dit que
Les objects, les références, les fonctions, y compris les spécialisations de modèles de fonctions, et les expressions ont une propriété appelée type.
Donc, compte tenu de ce qui suit:
int &&rf_int = 10;
Je peux dire que la variable rf_int
est de type composé rvalue référence à int .
Mais quand on parle de catégorie de valeur , il est dit que
Chaque expression a un type de non référence
et
Chaque expression C ++ (un opérateur avec ses opérandes, un littéral, un nom de variable , etc.)
Selon les deux instructions ci-dessus, rf_int
peut être traité comme une expression et l’expression a un type non référencé .
Maintenant je suis vraiment confus. Est- rf_int
que rf_int
a un type de référence ou pas? Devons-nous fournir un contexte lorsque nous parlons du type d’un nom, que ce soit une variable ou une expression?
Plus spécifiquement, quand un nom de variable est utilisé dans l’appel de fonction:
SomeFunc(rf_int);
Est-ce que rf_int
est maintenant considéré comme une expression (donc c’est une lvalue de type int) ou une variable (donc c’est une lvalue de type rvalue référence à int)?
EDIT : Un commentaire ici m’a fait me poser des questions sur cette question.