Heim > Backend-Entwicklung > C++ > Warum gibt „decltype((...))' eine Referenz zurück, während „decltype(...)' dies nicht tut?

Warum gibt „decltype((...))' eine Referenz zurück, während „decltype(...)' dies nicht tut?

Mary-Kate Olsen
Freigeben: 2024-11-02 04:31:30
Original
1064 Leute haben es durchsucht

 Why Does `decltype((...))` Return a Reference While `decltype(...)` Doesn't?

Die Bedeutung von Klammern in decltype((...)) verstehen

Die Verwendung von doppelten Klammern in decltype((... )) hat einen subtilen, aber wichtigen Einfluss auf den vom Decltype-Operator abgeleiteten Typ, wie das Beispiel aus der C 17 Function Definition Concurrency (FCD) zeigt.

Bei Anwendung auf einen nicht in Klammern gesetzten Bezeichner (id-expression) oder ein Zugriffsausdruck für Klassenmitglieder, decltype gibt den Typ der referenzierten Entität zurück. Wenn der Ausdruck jedoch ein L-Wert ist (eine Variable oder ein Ausdruck, der sich auf einen Speicherort bezieht), stellt decltype vor dem Typ der Entität eine zusätzliche Referenz (&) voran.

Im FCD-Beispiel:

  • decltype(a->x) referenziert eine Mitgliedsvariable (double x) einer Klasseninstanz (*a) und gibt somit den Basistyp des Mitglieds zurück: double.
  • decltype((a- >x)) schließt denselben Mitgliedszugriffsausdruck in Klammern ein und behandelt ihn als L-Wert. Als Ergebnis gibt decltype den Typ des L-Werts zurück, der eine Referenz auf den Double-Typ ist: const double&.

Das obige ist der detaillierte Inhalt vonWarum gibt „decltype((...))' eine Referenz zurück, während „decltype(...)' dies nicht tut?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage