Warum kompiliert die erste Zeile nicht, während die zweite Zeile kompiliert?C++ - Konstruktor des Klassentyps gibt einen Lvalue zurück?
float& t = float(10); // initial value of reference to non - const must be an lvalue
string& w = string("gg");
Bedeutet dies, dass der Zeichenfolgenkonstruktor einen Lvalue zurückgibt?
g ++ 4.8.2 gibt für * jede * dieser Zeilen einen "Fehler: ungültige Initialisierung der nichtkonstanten Referenz vom Typ ...". –
Das ist eine gute Frage, die mich wundern lässt, wie es hier immer jemanden gibt, der die Fragen ablehnt/nahe abstimmt (und ohne auch nur einen Kommentar zu hinterlassen, warum). Einige Nutzer sollten dieses Privileg zu Recht berauben. –
Ich denke, die zweite Zeile kompiliert, weil Sie MSVC verwenden und Sie nicht mit/W4 kompilieren. Hätten Sie mit/W4 kompiliert, hätten Sie etwas wie "Warnung C4239: nicht standardmäßige Erweiterung verwendet" gesehen. – cpplearner