Entmystifizierung universeller und weiterleitender Referenzen
In C war die Unterscheidung zwischen universellen und weiterleitenden Referenzen Gegenstand von Debatten. Um diese Verwirrung zu klären, untersuchen wir ihre Beziehung und Definitionen.
Das Wesen universeller Referenzen
In der Vergangenheit wurden universelle Referenzen eingeführt, um Vorlagenparameter zu beschreiben, die R-Wert-Referenzen akzeptieren konnten zu Lebenslauf-unqualifizierten Typen. Dadurch konnte die Vorlage entweder einen Wert oder eine L-Wert-Referenz basierend auf dem übergebenen Argument ableiten.
Weiterleitungsreferenzen definiert
Der Begriff „Weiterleitungsreferenz“ wurde in eingeführt C-Standard (N4164), um das Fehlen eines spezifischen Begriffs für dieses Konzept in C 11 zu beheben. Eine Weiterleitungsreferenz wird formal als R-Wert-Referenz auf definiert ein cv-unqualifizierter Vorlagenparameter. Wenn das Argument ein L-Wert ist, wird bei der Typableitung der Typ „A“ durch „L-Wert-Referenz auf A“ ersetzt.
Universalität und Weiterleitung: Gleiche Münze, verschiedene Seiten
Die Begriffe „universelle Referenz“ und „Weiterleitungsreferenz“ beschreiben dasselbe Konzept. Beide beziehen sich auf R-Wert-Referenzen auf cv-unqualifizierte Vorlagenparameter, die die Ableitung entweder eines Werts oder einer L-Wert-Referenz ermöglichen. Der aktuelle C-Standardbegriff lautet „Weiterleitungsreferenz“ und gilt als genauere und prägnantere Beschreibung.
Die Irrelevanz von std::forward
Es ist von entscheidender Bedeutung Beachten Sie, dass die Verwendung von std::forward innerhalb eines Funktionskörpers nichts mit dem Konzept der Weiterleitung von Referenzen zu tun hat. Weiterleitungsreferenzen beziehen sich ausschließlich auf die Ableitung von Vorlagentypen basierend auf R-Wert-Verweisen auf cv-unqualifizierte Parameter. Ihr Verhalten ist unabhängig davon, ob std::forward anschließend aufgerufen wird oder nicht.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen universellen und Weiterleitungsreferenzen in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!