Ich weiß, dass der Standard eine Ausnahme hat, um die Lebensdauer von Provisorien zu verlängern, die im Grunde sagt, dass das Binden einer Konst-Referenz in einem Konstruktor die Lebensdauer nicht verlängert, aber gilt dies auch für Literale? Zum Beispiel:Kann ein const int ref in einem Konstruktor sicher an ein Literal binden?
class C {
private:
const int& ref;
public:
C(const int& in)
: ref{in}
{ }
};
Wenn ich eine Funktion der Rückkehr ein Objekt dieser Art
C f() {
C c(2);
return c;
}
Würde der Wert von c.ref
in dem Anrufer nicht definiert werden musste, wenn ich wissen ist es zu einer wörtlichen gebunden?
Die Antwort hängt wahrscheinlich, wenn der Compiler einen globalen statischen Wert für die wörtliche und zeigt auf das schafft, oder wenn es erzeugt einen Stapel Wert bei Punkt. Könnte in beide Richtungen gehen. –
Warum nicht einfach den Wert int übergeben? Es wäre effizienter. – cppguy
@cppguy Dies ist ein sehr minimales Beispiel für das eigentliche Problem. –