Maison >développement back-end >C++ >Pourquoi « f(T&&) » n'est-il pas appelé lors de la transmission d'une référence Rvalue ?
Pourquoi les variables de référence rvalue ne sont pas des références rvalue
Considérons deux surcharges d'une fonction f :
void f(T&&&); // #1 void f(T&); // #2
Dans une autre fonction g :
void g(T&& t) { f(t); // calls #2 }
Pourquoi la surcharge f(T&) est-elle appelée malgré le paramètre n'est-ce pas une rvalue ?
La nature des références rvalue
Les références Rvalue sont des variables qui ne peuvent se lier qu'à des rvalues (objets sans noms). T&&t a un nom, ce qui en fait une lvalue.
Distinction entre type et valeur
T&& est la référence du type rvalue. Une référence rvalue ne peut être liée qu'à des rvalues, mais il s'agit par ailleurs d'une lvalue de type référence.
Cas particuliers
Règles régissant les références Rvalue
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!