⏱️ Lectura: 10 min
C++26 acaba de convertirse en el primer borrador de la historia del lenguaje que una votación ISO rechaza. El resultado llegó el 23 de octubre de 2026: doce de los veinte países con derecho a voto dijeron que sí, ocho por debajo del mínimo exigido, y nueve de veintidós votaron en contra, casi el doble del límite permitido. La votación DIS de C++26 fracasó por dos caminos distintos, y cualquiera de los dos bastaba para tumbar el borrador.
📑 En este artículo
El convocante del comité de C, Robert Seacord, confirmó el resultado al día siguiente en LinkedIn. Según él, ningún estándar de SC22, el organismo de ISO que agrupa a C, C++ y lenguajes afines, había reprobado antes una votación de este tipo.
TL;DR
- La votación DIS de C++26 fracasó el 23 de octubre de 2026 con 12 de 20 votos a favor (60%), lejos del 66,7% requerido.
- Nueve de 22 países votaron en contra (41%), más del límite máximo del 25% permitido por ISO.
- Es el primer borrador de C++ que falla una votación DIS, según Robert Seacord, convocante del comité C.
- Dinamarca, España, Italia, Japón y Suecia están entre los nueve países que rechazaron el borrador.
- Reflection, contracts, std::execution y library hardening quedan en pausa hasta la próxima revisión del comité.
Qué es C++26
C++26 es el borrador de la próxima revisión del estándar internacional del lenguaje C++, desarrollado por WG21, el grupo de trabajo de ISO/IEC JTC1/SC22 que define C++. Incorpora contracts, reflection, std::execution y library hardening, y debía convertirse en norma tras superar la votación DIS de C++26, tal como lo hicieron C++20 y C++23.
DIS significa Draft International Standard: es la penúltima etapa del proceso de ISO antes de publicar un estándar. Un borrador que pasa esa votación entra en la fase final de edición; uno que la pierde vuelve a comité para resolver los problemas que señalaron los países que votaron en contra.
Qué pasó en la votación DIS de C++26
El proceso de ISO exige cumplir dos condiciones a la vez para aprobar un DIS, y ambas fallaron. Según el desglose publicado por Train IT, la primera condición pide que al menos dos tercios de los P-members, los países miembros con voto pleno, digan que sí. C++26 obtuvo 12 de 20, un 60% que queda corto del 66,7% necesario.
La segunda condición limita los votos negativos a un 25% del total de organismos que votaron, sin importar si son P-members u observadores. Nueve de 22 organismos votaron en contra, un 41% que casi duplica el límite. Ninguna de las dos reglas cuenta las abstenciones, y por eso un mismo grupo de votantes produce dos porcentajes distintos.
| Condición | Requisito | Resultado real |
|---|---|---|
| Votos a favor de P-members | Al menos 2/3 (66,7%) | 12 de 20 (60%) |
| Votos negativos de todos los organismos | Máximo 25% | 9 de 22 (41%) |
Nueve países votaron en contra y acompañaron su voto con comentarios técnicos, como exige el proceso: Dinamarca, Finlandia, Irán, Italia, Japón, Luxemburgo, Rumania, España y Suecia. Francia e Irlanda se abstuvieron pero igual enviaron comentarios, así que once organismos en total dejaron observaciones por escrito. Polonia y Estados Unidos se abstuvieron sin comentarios.
Contexto e historia del borrador
Contracts no es una novedad de último momento: estuvo en C++20 y se sacó del estándar antes de publicarlo porque el comité no llegó a un acuerdo sobre el diseño. Desde entonces, la propuesta volvió a trabajarse para C++26 bajo el documento P5000R1 del Direction Group de WG21, el mismo grupo donde Daveed Vandevoorde describió el historial de votaciones limpias de C++ hasta ahora.
Ese historial es parte de lo que hace noticia este rechazo. Vandevoorde escribió que ningún borrador anterior de C++ había recibido ni un solo voto en contra, lo que convierte a esta votación DIS de C++26 en un quiebre, no en una variación menor del proceso habitual.
📌 Nota: Polonia decide su postura en ISO a través de un comité técnico interno, KT 331. Esta vez la moción para rechazar el borrador y enviar comentarios no juntó los votos necesarios, así que el país terminó absteniéndose sin poder adjuntar observaciones.
Detalles técnicos: cómo se cuentan los votos
El mecanismo detrás del rechazo no es solo aritmético: tiene que ver con quién cuenta y quién no en cada regla. SC22 distingue entre P-members, miembros plenos con voto que sí cuenta para el umbral de dos tercios, y O-members, observadores que pueden votar pero no entran en esa cuenta. Irán es O-member y votó en contra: ese voto sí entra en el límite de 25% de negativos, pero no en el cálculo de los dos tercios.
Nigeria ilustra el caso inverso. El resultado oficial no le asigna estatus de P-member ni O-member en SC22, y votó a favor. Ese voto cuenta para el denominador de la segunda regla, por eso son 22 organismos y no 20, pero no suma para el umbral de aprobación de P-members. Dos votos que entran por puertas distintas del mismo proceso explican por qué 20 y 22 no son el mismo número en la tabla de resultados.
flowchart TD
A["Votacion DIS de C++26"] --> B["Regla 1: 2/3 de P-members en Si"]
A --> C["Regla 2: menos de 25% de votos No"]
B --> D["Resultado real: 12 de 20, 60%"]
C --> E["Resultado real: 9 de 22, 41%"]
D --> F["No llega al minimo de 66.7%"]
E --> G["Supera el limite de 25%"]
F --> H["Borrador reprobado"]
G --> H
Una de las piezas bloqueadas por este resultado es la sintaxis de contracts que llevaba meses probándose en talleres y en librerías como mp-units. Así se ve una función con una precondición y una poscondición bajo la propuesta vigente:
int dividir(int a, int b)
pre(b != 0)
post(r: r == a / b)
{
return a / b;
}
Sin esta sintaxis en el estándar, cada compilador y cada framework sigue resolviendo las precondiciones a su manera: con asserts manuales, con macros propias o con bibliotecas de terceros que no son intercambiables entre proyectos.
No hay forma directa de verificar este resultado desde afuera: el acta oficial de SC22 no es pública, solo los delegados de los organismos nacionales pueden consultarla en el sitio del comité. Lo único verificable hoy para cualquiera es la publicación de Seacord en LinkedIn y el resumen de Train IT; el acta completa, con el texto de los comentarios de cada país, llega recién con el informe formal.
Impacto y análisis
El golpe no cae solo sobre contracts. Reflection, std::execution y library hardening viajaban en el mismo borrador, así que quedan atados al mismo retraso aunque ningún país haya objetado esas piezas en particular. Es el costo de empaquetar features grandes en una sola votación DIS de C++26: un rechazo por un capítulo frena a todos los demás.
El autor del blog que documentó el resultado, que enseña contracts en talleres de C++ y usa la versión de C++26 en su librería mp-units, fue explícito sobre su postura una vez cerrada la votación: prefiere que contracts quede en el estándar aunque haya que negociar más el diseño, porque documentar precondiciones en la firma de una función evita que esa documentación quede obsoleta sin que nadie lo note.
💭 Clave: Bastaba con fallar una sola de las dos condiciones para tumbar el borrador completo; C++26 falló las dos a la vez, por márgenes amplios en ambas.
Qué sigue para C++26
El reglamento de ISO, en la cláusula 2.6.5 de la Parte 1 de sus directrices, obliga a publicar un informe completo dentro de las 12 semanas posteriores al cierre de la votación. Para un cierre del 23 de octubre de 2026, el plazo máximo cae a mediados de enero de 2027. Ese informe debe incluir el resultado, la decisión del presidente del comité y el texto completo de los comentarios de cada país.
En la etapa de committee draft, WG21 ya había publicado ese tipo de informe como el documento N5028. Todavía no está confirmado si el comité repetirá el formato para esta votación, pero el precedente sugiere que sí.
Mientras tanto, el comité tiene que decidir cómo responder a los nueve países que votaron en contra: puede reescribir las partes señaladas, dividir el borrador en piezas que se voten por separado, o volver a someter el mismo texto a otra ronda. Ninguna opción es rápida, y cada una retrasa la fecha en la que C++26 se convierte en estándar oficial.
📖 Resumen en Telegram: Ver resumen
Si trabajás con C++ moderno, vale la pena leer el desglose completo de Train IT y seguir los documentos de WG21 en open-std.org antes de que salga el informe oficial en enero de 2027.
Preguntas frecuentes
¿Qué es una votación DIS en ISO?
Es la fase de Draft International Standard, la etapa previa a publicar un estándar. En ella, los organismos nacionales miembros de ISO votan si el texto está listo para convertirse en norma o si necesita volver a comité.
¿Por qué Irán y Nigeria no cuentan igual en la votación DIS de C++26?
Irán es O-member, observador, y su voto negativo entra en el límite de 25% de votos en contra, pero no en el umbral de dos tercios de P-members. Nigeria no tiene estatus de P-member ni O-member en SC22, pero su voto a favor sí entra en el denominador de 22 organismos de la segunda regla.
¿Esto significa que contracts no llegará nunca a C++?
No. El rechazo devuelve el borrador a comité para que se resuelvan los problemas señalados por los nueve países que votaron en contra. Contracts ya volvió una vez, tras salir de C++20, así que un segundo intento es el escenario más probable.
¿Qué pasa con reflection y std::execution ahora?
Quedan atadas al mismo retraso que contracts porque viajaban en el mismo borrador de C++26, aunque ningún país haya votado en contra específicamente por esas piezas.
¿Cuándo se van a conocer los comentarios completos de los países que votaron en contra?
Las reglas de ISO obligan a publicar el informe completo dentro de 12 semanas desde el cierre de la votación, es decir, a más tardar a mediados de enero de 2027.
Referencias
- Train IT: The result of the C++26 DIS ballot: el post original con el desglose completo de la votación.
- WG21, el comité de ISO que redacta el estándar de C++: archivo oficial de documentos y actas del grupo de trabajo.
- Wikipedia: C++26: resumen de las características propuestas para la próxima revisión del lenguaje.
- P5000R1, WG21 Direction Group: el documento donde Daveed Vandevoorde comenta el historial de votaciones de C++.
📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
Imagen destacada: Foto de Markus Spiske en Unsplash
¿Te sirvió? ¿Te dio otro error? Contalo abajo: las preguntas se responden y le sirven al siguiente que llegue.
Dejar un comentario
0 Comentarios