Type C ++ et catégorie de valeur pour expression et variable

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.