Heim >Backend-Entwicklung >C++ >Warum wird „f(T&&)' nicht aufgerufen, wenn eine R-Wert-Referenz darauf übergeben wird?
Warum R-Wert-Referenzen Variablen keine R-Wert-Referenzen sind
Betrachten Sie zwei Überladungen einer Funktion f:
void f(T&&&); // #1 void f(T&); // #2
In eine andere Funktion g:
void g(T&& t) { f(t); // calls #2 }
Warum erfolgt die Überladung f(T&) aufgerufen, obwohl der Parameter t ein R-Wert ist?
Die Natur von R-Wert-Referenzen
R-Wert-Referenzen sind Variablen, die nur an R-Werte (Objekte ohne) gebunden werden können Namen). T&&t hat einen Namen, was es zu einem L-Wert macht.
Unterscheidung zwischen Typ und Wert
T&& ist die Typ-R-Wert-Referenz. Eine R-Wert-Referenz kann nur an R-Werte gebunden werden, ist aber ansonsten ein L-Wert vom Referenztyp.
Sonderfälle
Regeln für R-Wert-Referenzen
Das obige ist der detaillierte Inhalt vonWarum wird „f(T&&)' nicht aufgerufen, wenn eine R-Wert-Referenz darauf übergeben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!