Aktualisierung der Frage Why this two rvalue references examples have different behavior?:Kann ich Rvalue-Referenz zu temporär verwenden? Ist es undefiniertes Verhalten oder nicht?
Quellcode:
int a = 0;
auto && b = a++;
++a;
cout << a << b << endl;
druckt 20
Ist es nicht definiertes Verhalten (UB) b
nach dem a++
Aufruf zu benutzen? Vielleicht können wir b
nicht verwenden, weil es sich auf ein temporäres bezieht?
Dieses Dokument nützlich sein könnte Sie: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1993/N0345.pdf – dkg
Hmm, von meinem Verständnis her ist es nicht so, wie der Wert des temporären von 'a ++' "verschoben" wird "zu" b ". Aber ich denke, es könnte UB sein, wenn Sie 'auto && b = ++ a;' verwenden würden, wie in Ihrem Beispiel in der anderen Frage. Aber ich kann völlig falsch liegen, da ich mit der Bewegungssemantik nicht wirklich vertraut bin. –
@ dkg Ist es tatsächlich für Verweise auf Rvalues in C++ 11 ('&&') eingeführt? – vladon