Rvalue-Referenzen auf Const: Eine praktische Perspektive
Trotz der allgemeinen Überzeugung, dass Rvalue-Referenzen auf const (const Foo&&) keinen Nutzen haben, gibt es keinen Nutzen sind in der Tat praktische Anwendungen für sie, wie der Entwurf C 0x selbst zeigt.
Der C 0x Draft verwendet solche Referenzen in verschiedenen Fällen, um eine unerwünschte Bindung von R-Werten an andere ref(T&)- und cref(const T&)-Funktionen zu verhindern. Diese Funktionen sind speziell darauf ausgelegt, nur L-Werte (Verweise auf Objekte) zu akzeptieren, und R-Wert-Referenzen auf const stellen sicher, dass R-Werte (Verweise auf Temporäre) nicht fälschlicherweise gebunden werden.
Kürzlich, bei der Durchsicht des offiziellen Standards N3290 (nicht öffentlich). zugänglich), haben wir die folgende Zeile in 20.8 Funktionsobjekten entdeckt [function.objects]/p2:
template
template
Eine weitere Untersuchung des neuesten Post-C 11-Entwurfs, N3485 (öffentlich verfügbar), bestätigt die Persistenz dieser Zeilen in 20.8 Funktionsobjekten [function.objects]/p2 .
Diese Beispiele veranschaulichen die Nützlichkeit von R-Wert-Verweisen auf const in bestimmten Szenarien, insbesondere wenn es darum geht, die Richtigkeit sicherzustellen Verhalten bei Funktionsüberladungen und Verhinderung unbeabsichtigter Bindung von R-Werten.
Das obige ist der detaillierte Inhalt vonWann sind „const Foo&&' Rvalue-Referenzen nützlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!