Visual Studio-Fehler: Nicht konstante Referenz an temporäres Objekt gebunden
Der angegebene Codeausschnitt veranschaulicht ein eigenartiges Verhalten, das in Visual Studio beobachtet wurde:
class Zebra {int x;}; Zebra goo() {Zebra z; return z;} void foo(Zebra &x) { Zebra y; x = y; foo(goo()); }
Visual Studio ermöglicht die fehlerfreie Kompilierung dieses Codes, während gcc einen Kompilierungsfehler auslöst. Dieses Verhalten wird noch rätselhafter, wenn ein Typedef verwendet wird, um Zebra als int darzustellen, da Visual Studio dann das Problem erkennt.
Dieses Verhalten wird durch eine alte Visual Studio-Erweiterung gesteuert. Wie im Fehlerbericht von Microsoft „Temporäre Objekte können an nicht konstante Referenzen gebunden werden“ dokumentiert, lässt Visual Studio zu, dass nicht konstante Referenzen an temporäre Objekte gebunden werden.
Diese Erweiterung kann jedoch mit dem / deaktiviert werden. Za-Compiler-Flag, das dazu führt, dass das betreffende Code-Snippet einen Fehler anzeigt. Darüber hinaus ist eine Warnung der Stufe 4 (aktiviert mit /W4) verfügbar, um dieses Problem zu kennzeichnen.
Das obige ist der detaillierte Inhalt vonWarum lässt Visual Studio zu, dass nicht konstante Referenzen an temporäre Objekte gebunden werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!