Nuevo C++ 26: resumen de los 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

Ha sido publicado el estándar C++ 26: qué cambió y cómo afectará al desarrollo



El 14 de febrero de 2025, el comité internacional de estandarización de C++ aprobó la versión final del nuevo estándar: C++ 26. No es solo una actualización más, sino un paso significativo hacia adelante que introduce en el lenguaje capacidades largamente esperadas que mejoran el rendimiento, la seguridad y la comodidad del código. Los desarrolladores que siguen la evolución de los lenguajes de programación ya han comenzado a estudiar las innovaciones que prometen simplificar la escritura de sistemas complejos.



Los cambios clave en C++ 26 se pueden dividir en tres grandes grupos: mejoras en el trabajo con memoria y plantillas, nuevas construcciones sintácticas y la expansión de la biblioteca estándar. Analicemos cada uno de ellos en detalle.



Mejoras en plantillas y reflexión estática



Una de las innovaciones más destacadas fue el soporte para índices estáticos (static index). Ahora los desarrolladores pueden obtener información sobre los tipos y la estructura del código en tiempo de compilación sin necesidad de usar macros o generadores de código externos. Esto simplifica la escritura de bibliotecas para serialización, registro (logging) y pruebas.



  • Índices estáticos (static_index): Permiten acceder a elementos de tuplas y variantes mediante un índice conocido en tiempo de compilación, sin costos en tiempo de ejecución.
  • Deducción de plantillas mejorada: El compilador ahora puede determinar automáticamente los tipos para parámetros de plantilla más complejos, incluyendo plantillas anidadas.
  • Ocultación de tipos (type erasure) sin pérdida de rendimiento: Se introdujeron nuevos mecanismos para crear interfaces genéricas que no requieren llamadas virtuales.


Nuevas capacidades sintácticas y patrones



C++ 26 continúa con el rumbo de simplificar la sintaxis, haciendo el código más legible y menos propenso a errores. El estándar incluye construcciones largamente esperadas que antes solo estaban disponibles a través de bibliotecas de terceros o extensiones del compilador.



  • Patrones for-else y while-else: La construcción, familiar para los desarrolladores de Python, ahora está disponible en C++. El bloque else se ejecuta si el bucle terminó sin la instrucción break.
  • Expresiones lambda mejoradas: Las lambdas ahora pueden ser plantillas por defecto, así como capturar variables por referencia con posibilidad de movimiento (move).
  • Destructores para estructuras (std::destructor): Apareció la posibilidad de especificar explícitamente el orden de destrucción de los campos de una estructura, lo cual es crítico para sistemas complejos de gestión de recursos.


Actualizaciones de la biblioteca estándar



La biblioteca estándar de C++ 26 recibió varias extensiones importantes que la hacen más competitiva frente a los lenguajes modernos. Se prestó especial atención al trabajo con memoria y cómputo paralelo.



  • std::mdspan (vistas multidimensionales): Se estandarizaron finalmente las vistas multidimensionales no propietarias de arrays. Esto simplifica el trabajo con imágenes, matrices y tensores.
  • std::out_ptr y std::inout_ptr: Nuevos adaptadores para la transferencia segura de punteros inteligentes a funciones de C que aceptan punteros sin formato (raw pointers).
  • Algoritmos extendidos para contenedores: Se agregaron versiones paralelas de algoritmos para trabajar con ranges, así como un soporte mejorado para std::flat_map y std::flat_set.


Impacto en la comunidad y planes de soporte



El nuevo estándar ya ha comenzado a implementarse en los compiladores. GCC 14, Clang 18

Recommended Libraries