R value requires LValue



  • Auch ein Klassiker:

    OP Ich hab hier diesen Code <snip> der Zeigt Verhalten <snip>, warum ist das so?
    X Der Code kann nicht verhalten <snip> haben, der kompiliert ja nichtmal. <Erklärung warum modifizierten Code posten scheisse ist>
    OP Kompiliert wohl, darum geht's aber nicht.
    X Nein, in Zeile <snip> steht <snip> und das ist falsch weil <snip>. Also zeigst du uns nicht deinen echten Code.
    OP Ach das, das steht in dem Code den ich wirklich meine aber natürlich nicht herzeigt ja anders, also alles gut, kompiliert schon wie es soll, beantworte mal lieber meine Frage anstatt blöd Dinge zu kritisieren um die es gar nicht geht.
    🤦🏻♂



  • @hustbaer sagte in R value requires LValue:

    int& p = atoi("123");

    Ich bin in Sachen Rvalues und LValues nicht ganz so fit. Also habe ich mit dem obigen Code ein wenig rumgespielt, wobei folgendes entstand.

    #include <iostream>
    
    int main()
    {
        int&& p = atoi("123");
        int& p2 = p;
    
        p2 = 2;
        std::cout << "Hello World!\n";
    }
    

    Warum funktioniert dieser?



  • @Quiche-Lorraine Die rvalue-ref p Verlängert die Lifetime des zurückgegeben Temporaries auf die Lifetime von p.



  • Und erlaubt ist int& p2 = p; weil der Ausdruck p hier eine LValue ist, obwohl die Variable p eine RValue Referenz ist ("wenn's einen Namen hat ist es eine LValue").


Anmelden zum Antworten