Ändern sich C++-Wertkategorieregeln wie die Kopierelision mit C++26 trivially_relocatable_if_eligible?C++

Programme in C++. Entwicklerforum
Anonymous
 Ändern sich C++-Wertkategorieregeln wie die Kopierelision mit C++26 trivially_relocatable_if_eligible?

Post by Anonymous »

C++11-Wertekategorien (L-Werte, X-Werte und Pr-Werte) sind so tief mit dem Kern von C++ selbst verknüpft, dass es nicht möglich ist, über C++ nachzudenken, ohne über Wertesemantik nachzudenken.
C++17 hat das Objektmodell geglättet, sodass wir Dinge wie garantierte Kopierelision haben, die es vorhersehbarer macht, zu wissen, wann Konstruktion/Zerstörung/temporäre Materialisierung usw. dahinter passiert Szenen.
C++26 hat das Konzept der trivialen Verschiebbarkeit eingeführt, sodass wir die Zerstörung einiger verschobener Werte überspringen können. Ich frage mich, welche Auswirkungen es hat, wenn ich über C++-Ausdrücke nachdenke und dabei den Blick auf Wertkategorien gerichtet habe.

Wenn ich zum Beispiel eine Variable (also einen L-Wert) für einen trivial verschiebbaren Typ habe und den Wert irgendwohin verschiebe, erzeugt das dann einen PR-Wert anstelle eines X-Werts?

Wird es zu einem UB, den Zeiger auf den verschobenen Wert zu verwenden?

Was ist mit der vorübergehenden Materialisierung? Ändern sich irgendwelche Regeln?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post