En la reunión ISO celebrada en Sofía (junio 2025) se congelaron las características de C++26, marcando el cierre del borrador (CD ballot) durante el verano de 2025. Posteriormente, en la reunión de Kona (otoño 2025) se resolverán los comentarios de comité, previendo la aprobación definitiva del estándar en el primer trimestre de 2026 (etapa DIS). En resumen, el borrador finalizado quedó completo a mediados de 2025 y entró en fase de revisión formal.
C++26 sucede a C++23 (ISO/IEC 14882:2024). C++20, publicado en 2020, introdujo transformaciones de gran calado como concepts, modules, corutinas y la biblioteca Ranges. Posteriormente, C++23 completó varias mejoras de biblioteca (por ejemplo, std::span
, std::expected
, y ejecutores) pero sin alteraciones de lenguaje tan profundas como su predecesor. Ahora, C++26 se perfila como una “segunda ola” de modernización: según Herb Sutter, traerá un estilo de programación característico de la era C++26, incorporando std::execution
, contratos y reflexión estática.
Características principales de C++26
Reflexión estática (static reflection): permite la introspección de tipos y metadatos en tiempo de compilación mediante std::meta::info
y operadores dedicados. En la reunión ISO de junio 2025 (Sofía) se aprobaron varias propuestas clave (por ejemplo, P2996R13), marcando un hito hacia la generación de código auxiliar como bindings, serialización o conversión de enumeraciones a cadenas.
Contratos (Design by Contract): se reintroducen los contratos de programa con atributos como [[pre:]]
, [[post:]]
y la función contract_assert
. Estos mecanismos, previstos originalmente para C++20, regresan en C++26 para especificar condiciones previas y posteriores de las funciones, reforzando invariantes y detectando fallos de validación de manera temprana.
Ejecución asíncrona (std::execution
, senders/receivers): C++26 consolida el modelo de programación asíncrona a través de los conceptos sender y receiver, gestionando tareas concurrentes y planificadores ligeros con la biblioteca <execution>
. Este enfoque amplía la flexibilidad frente a futuros/promesas tradicionales.
Paralelismo y concurrencia en la biblioteca: se introducen algoritmos paralelos para Ranges (P3179R9), async_scope
(P3149R11), y un planificador paralelo genérico (P2079R10). Además, se extiende std::simd
y se implementan nuevas estrategias para combinar concurrencia multihilo y paralelismo SIMD en la STL.
Metaprogramación y utilidades de compilación: C++26 incorpora el pack-indexing (P2662R3) para acceder a parámetros en plantillas variádicas, y la directiva #embed
(P1967R14) para incrustar recursos binarios directamente en el código fuente, facilitando aplicaciones como imágenes empotradas o tablas de cadenas generadas en tiempo de compilación.
Seguridad y validación: se refuerzan mecanismos de comprobación de punteros nulos y validación de límites en iteradores, además de perseguir la eliminación de comportamientos indefinidos, como lecturas no inicializadas. Este esfuerzo se refleja también en la extensión de punteros inteligentes y utilidades de validación.
Nuevas cabeceras y librerías: destacan los módulos <contracts>
, <linalg>
(álgebra lineal de alto rendimiento), y mejoras para <simd>
, <hazard_pointer>
y <hive>
. Esto amplía la STL con utilidades modernas enfocadas en concurrencia y matemáticas científicas.
Referencias
- International Organization for Standardization. (2024). ISO/IEC 14882:2024 Programming Language C++. ISO.
- Sutter, H. (2025). C++26 static reflection and contracts: a new programming era. Retrieved from https://herbsutter.com
- WG21 Committee. (2025). Meeting minutes June 2025, Sofia. Retrieved from https://isocpp.org/files/papers
- InfoQ. (2025). What’s coming in C++26?. Retrieved from https://www.infoq.com/articles/cpp26-overview/
- cppreference.com. (2025). C++26 Status. Retrieved from https://en.cppreference.com/w/cpp/26
- WG21 Proposals. (2025). P2996R13, P3179R9, P3149R11, P2079R10, P2662R3, P1967R14. Retrieved from https://wg21.link/