referenzen auf lokale variablen
-
ist das definiertes verhalten oder ist es wie bei zeigern undefiniert?
int& f() { int a = 123; return a; } int main() { int a = f(); }
-
Undefiniert.
Wenn du irgendwannint &&f() { int a = 123; return a; }
findest, das ist auch undefiniert.
-
Die entscheidende Frage ist, ob das lokale Objekt a zerstört wird, bevor oder nachdem die Initialisierung stattfindet. Die Antwort ist: Davor. Und damit hast du ein glvalue das auf freigegebenen Speicher zeigt - was bei Zuweisung in undefiniertem Verhalten resultiert.
-
okay, danke für die antworten. werde es in meinem fall einfach mit einer kopie machen