Nuevo estándar de C++: cambios clave en la última versión

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

Salió la nueva versión de C++: qué cambió en el lenguaje de programación



El comité internacional de estandarización de C++ (ISO/IEC JTC1/SC22/WG21) aprobó oficialmente la siguiente versión del estándar: C++23. Esta versión trae mejoras largamente esperadas que hacen que el lenguaje sea más seguro, expresivo y conveniente para el desarrollo tanto de software de sistema como de aplicaciones. Contamos las novedades más significativas.



Principales cambios en C++23



1. std::print — salida formateada sin esfuerzo adicional

Una de las características más notables fue la aparición de la función std::print. Ahora para la salida al flujo estándar no es necesario escribir construcciones voluminosas con std::cout o usar printf con riesgo de errores de tipo. std::print funciona basándose en std::format, garantizando seguridad de tipos y legibilidad:

  • Formateo automático de números, cadenas y tipos definidos por el usuario.
  • Soporte para configuraciones regionales y Unicode.
  • Velocidad cercana a printf, pero sin fugas de memoria.


2. Trabajo mejorado con corrutinas

Las corrutinas, que aparecieron por primera vez en C++20, recibieron una serie de correcciones y adiciones. En C++23 se simplificó la sintaxis de declaración de funciones asíncronas, y también se agregó soporte para std::generator — un nuevo tipo para crear secuencias de valores sobre la marcha:

  • Los generadores permiten escribir cálculos perezosos sin gestión manual del estado.
  • Se redujo la cantidad de código repetitivo para trabajar con corrutinas.


3. Módulos — estabilidad y rendimiento

Aunque los módulos se introdujeron en C++20, su implementación en los compiladores dejaba mucho que desear. En el nuevo estándar se aclararon las reglas de exportación e importación, lo que llevó a:

  • Reducción del tiempo de compilación de proyectos grandes en 2–3 veces.
  • Compatibilidad total con archivos de cabecera (modo híbrido).
  • Posibilidad de crear módulos para la biblioteca estándar (experimental).


4. Nuevas capacidades de constexpr y consteval

La ampliación del contexto de expresiones constantes es uno de los principales objetivos del desarrollo de C++. En C++23 se permite usar constexpr para:

  • Asignación dinámica de memoria (std::vector y std::string).
  • Llamada a funciones virtuales.
  • Trabajo con punto flotante sin pérdida de precisión.

Esto permite realizar cada vez más cálculos en tiempo de compilación, acelerando el runtime.



5. Atributo [[assume]] — sugerencias al optimizador

El nuevo atributo [[assume(expresión)]] le indica al compilador que la expresión es verdadera en ese punto del código. Esto proporciona:

  • Optimizaciones más agresivas (eliminación de bifurcaciones, plegado de bucles).
  • Mayor rendimiento en secciones críticas (motores de juegos, embedded).


6. Simplificación de la concurrencia

Se agregaron nuevos tipos para sincronización: std::counting_semaphore con rendimiento mejorado y std::latch para barreras de un solo uso. Además, apareció soporte para std::mdspan

Recommended Libraries