Warum funktioniert benannter Rückzugswertoptimierungsoptimierung hier nicht?C++

Programme in C++. Entwicklerforum
Anonymous
 Warum funktioniert benannter Rückzugswertoptimierungsoptimierung hier nicht?

Post by Anonymous »

Ich schaue mir ein Video auf RVO und NRVO an und Sie können an diesem Punkt sehen, dass: < /p>

Code: Select all

MyObj example()
{
MyObj a = MyObj(3);
return a += 1;
};
< /code>
hat nicht die Optimierung angewendet, während: < /p>
MyObj example()
{
MyObj a = MyObj(3);
a += 1;
return a;
};
< /code>
hat die Optimierung angewendet. Liegt dies einfach wegen einer Regel, die besagt, dass die Optimierung nur angewendet werden kann, wenn Sie einen LVALUE oder einen PrValue strikt zurückgeben? Ich habe Schwierigkeiten, die Wertkategorien zu verstehen, ich denke, return a += 1; Am Ende ist ein XValue, was ich denke, ein Lvalue, der durch einen Ausdruck in ein temporäres RValue modifiziert wurde. < /p>
Was ist mit: < /p>
MyObj example()
{
return MyObj(3) + 1;
};
< /code>
ist: < /p>
return MyObj(3) + 1;
< /code>
Die gleiche Wertkategorie wie: < /p>
return MyObj(3);
?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post
  • Kann ich einer Funktion in C# eine beliebige Anzahl benannter Parameter übergeben?
    by Anonymous » » in C#
    0 Replies
    27 Views
    Last post by Anonymous
  • Kann ich einer Funktion in C# eine beliebige Anzahl benannter Parameter übergeben?
    by Guest » » in C#
    0 Replies
    20 Views
    Last post by Guest
  • Warum ist die Summe hier nicht unendlich?
    by Anonymous » » in Java
    0 Replies
    0 Views
    Last post by Anonymous
  • Warum ist die Summe hier nicht unendlich?
    by Anonymous » » in Java
    0 Replies
    0 Views
    Last post by Anonymous
  • Warum ist Task.run () hier erforderlich?
    by Anonymous » » in C#
    0 Replies
    12 Views
    Last post by Anonymous