Aus irgendeinem Grund habe ich diese genaue Frage nicht gefunden. Warum ist es erlaubt, eine rvalue
an const lvalue reference
zu binden, obwohl es unmöglich ist, das gleiche ohne die const
?Binden von rvalue an const lvalue reference
Ich verstehe, dass die Lebensdauer des Rvalue irgendwie eine Erweiterung erhält (im ersten Fall), aber wenn ja, warum würde der Compiler es nicht erlauben, diesen 'rvalue' zu ändern, der eigentlich kein temporäres Objekt mehr ist.
Betrachten wir zum Beispiel den folgenden Code:
int main(){
int &i=3; //produces error
const int&j =3; //compiles
return 1;
}
Frage macht keinen Sinn. 'rvalue's können nicht gebunden werden. Nur Referenzen können an irgendetwas gebunden sein. – SergeyA