C++23: Implizites Move ohne std::move

Move in C++ without a std:move

C++23: Implizites Move ohne std::move

In diesem Beitrag zeigt Andreas Fertig, wie C++23 das Verschieben von Rückgabewerten vereinfacht. Während in C++20 bei Funktionen, die Rvalue-Referenzen zurückgeben, oft ein manuelles std::move nötig war, übernimmt der Compiler in C++23 diese Aufgabe automatisch. Das macht Code nicht nur kürzer, sondern auch performanter, da unnötige Kopien vermieden werden. Fertig argumentiert, dass std::move nur selten benötigt wird und dass C++23 diese Regel noch konsequenter unterstützt.

Sobald Sie Ihren Compiler auf C++23 umstellen, führen beide Fälle ein implizites Move aus – kein std::move erforderlich.
  1. sprocketz

    Was macht NVRO so viel schwieriger zu implementieren? Warum konnten sie nicht vorschreiben, dass es wie RVO gemacht wird? Spezialisieren Compiler buchstäblich nur auf eine einfache return-Anweisung einer direkten Konstruktion oder so?

  2. fluoridation

    Leider glaube ich nicht, dass man darum herumkommt, Wertesemantik zu verstehen, um das korrekte und/oder performante Verhalten zu erhalten.

  3. tom_

    Falls der Autor das liest: Beide komplizierten Beispiele sind dasselbe.

Mehr von diesem Tag

2026-09-02