Nuevo estándar C++23: cambios clave y mejoras del lenguaje

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Se ha lanzado el nuevo estándar C++23: qué ha cambiado y cómo afectará al desarrollo



El comité internacional de estandarización de C++ (ISO/IEC JTC1/SC22/WG21) ha aprobado oficialmente la nueva versión del lenguaje — C++23. Este lanzamiento no es tan fundamental como C++11 o C++20, pero incluye muchas mejoras largamente esperadas que harán que el código sea más seguro, expresivo y eficiente. Analicemos las principales novedades que todo desarrollador de C++ debe conocer.



Principales cambios en C++23



  • Deducing this (P0847R7) — la novedad más esperada. Ahora se puede especificar explícitamente el objeto sobre el que se llama al método, lo que simplifica la sobrecarga para lvalue/rvalue, versiones constantes y no constantes, y elimina la duplicación de código en plantillas CRTP.
  • std::expected (P0323R12) — un tipo para el manejo de errores sin excepciones, alternativa a std::optional y las excepciones. Permite devolver un valor o un error, algo crítico para sistemas con estrictos requisitos de rendimiento.
  • Módulos std (P2465R3) — la biblioteca estándar ahora se exporta a través de módulos, lo que acelera la compilación y mejora el aislamiento del código. Por ejemplo, import std; reemplaza decenas de #include.
  • Mejoras en corrutinas — se ha añadido el tipo std::generator para secuencias perezosas y se han corregido muchos problemas de rendimiento y ergonomía de las corrutinas de C++20.
  • Multihilo — nuevo mecanismo std::latch y std::barrier para la sincronización de hilos, así como un std::counting_semaphore mejorado.


¿Qué significa esto para los desarrolladores?



C++23 no rompe la compatibilidad hacia atrás, pero introduce nuevas prácticas. Por ejemplo, deducing this simplifica la escritura de bibliotecas, y std::expected reemplazará gradualmente las engorrosas comprobaciones de códigos de retorno. Muchos compiladores (GCC 13+, Clang 16+, MSVC 2022 17.6+) ya soportan parte de las funcionalidades.



Para quienes trabajan con sistemas de alta carga, son especialmente importantes los módulos (aceleración de la compilación del 20-40%) y la mejora en el manejo de errores sin excepciones. Si usa C++20, la migración a C++23 no requerirá reescribir el código — basta con activar el nuevo flag de compilación.



¿Cuándo se espera soporte completo?



Se espera soporte completo de C++23 en los compiladores para finales de 2024. Por ahora se pueden probar funcionalidades individuales con los flags -std=c++2b (GCC/Clang) o /std:c++latest (MSVC). Recomendamos empezar con std::expected y deducing this — son los más útiles en proyectos reales.



Ejemplos de código actualizados y comparaciones con C++20 los encontrará en la documentación de los compiladores. C++23 es un paso evolutivo que hace que el lenguaje sea más seguro y cómodo, sin sacrificar el rendimiento.

Recommended Libraries