El estándar C++26 ha encontrado un punto muerto notable tras un voto pro forma fallido que bloqueó la inclusión de 'Contracts'. Según se informa, este desarrollo estuvo influenciado por la oposición de figuras clave en el proceso de estandarización, incluyendo un documento que sugería que la función aún no estaba lista para su lanzamiento. El rechazo de esta propuesta sirve como un indicador del estado actual del lenguaje C++, donde los Organismos Nacionales (NBs) de la ISO son cada vez más cautelosos a la hora de introducir nuevas funciones que puedan contribuir a la percepción de sobrecarga o falta de claridad del lenguaje.
Técnicamente, C++ Contracts están destinados a ser aserciones de tiempo de ejecución estructuradas diseñadas para mejorar la fiabilidad del software. Son distintos de C++20 Concepts, que son 'tipos de tipos' en tiempo de compilación utilizados para restringir parámetros de plantilla. Aunque ambos tienen como objetivo mejorar la seguridad del código, Contracts operan en tiempo de ejecución para verificar condiciones que no pueden comprobarse durante la compilación. Sin embargo, algunos críticos argumentan que la recompensa práctica de Contracts es mínima. Sostienen que para los desarrolladores que ya escriben código de alta fiabilidad, la función se solapa en gran medida con lo que ya se puede lograr utilizando `constexpr` y C++20 Concepts, ofreciendo poca utilidad nueva para aquellos que ya siguen los modismos estándar de fiabilidad.
Más allá de la mecánica específica de Contracts, el rechazo refleja una tensión más amplia con respecto a la evolución del propio C++. Algunos miembros de la comunidad argumentan que el lenguaje se está 'doblegando' bajo el peso de las nuevas funciones y que estaría mejor atendido refinando problemas existentes, como el 'comportamiento erróneo' o las complejidades de `std::filesystem`. Existe un llamado creciente a priorizar mejoras fundamentales —como la seguridad de memoria— sobre la adición de nuevas funciones que pueden aumentar la complejidad sin simplificar significativamente la experiencia del desarrollador. Este punto muerto subraya un desafío importante para el comité de estándares de C++: equilibrar el deseo de herramientas de fiabilidad modernas con la necesidad de gestionar un lenguaje que se ha vuelto cada vez más complejo a lo largo de décadas de desarrollo.
