Heim > Backend-Entwicklung > C++ > Was ist der Unterschied zwischen universellen und Weiterleitungsreferenzen in C?

Was ist der Unterschied zwischen universellen und Weiterleitungsreferenzen in C?

DDD
Freigeben: 2024-11-12 13:08:02
Original
665 Leute haben es durchsucht

What's the Difference Between Universal and Forwarding References in C  ?

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage