C++23 elimina la necesidad de std::move en estos dos casos

Move in C++ without a std:move

C++23 elimina la necesidad de std::move en estos dos casos

Andreas Fertig, experto en C++, muestra cómo el estándar C++23 introduce movimientos implícitos en dos situaciones que antes requerían std::move. Esto permite seguir su consejo de usar std::move solo raramente, logrando el mejor rendimiento por defecto. El artículo explica la optimización del valor de retorno (RVO y NRVO) y los cambios en el lenguaje que simplifican el código y evitan copias innecesarias.

Una vez que cambias tu compilador al modo C++23, ambos casos hacen un movimiento implícito. No se requiere std::move.
  1. fluoridation

    Desafortunadamente, creo que no hay forma de evitar entender la semántica de valores para obtener el comportamiento correcto y/o eficiente.

  2. sprocketz

    ¿Qué es lo que hace que la NRVO sea mucho más difícil de implementar? ¿Por qué no podrían exigir que se haga igual que la RVO? ¿Los compiladores simplemente tratan de manera especial una declaración de retorno de una construcción directa o algo así?

  3. tom_

    Si el autor está leyendo esto: ambos ejemplos complicados son iguales.

Más de este día

2026-09-02