- El equipo de Google Chrome enumera unos 40 problemas que aparecen al adoptar C++20 y organiza sus soluciones
- El estándar de C++ sale cada 3 años, y en Chrome su primera aplicación llega recién 3 años después del lanzamiento
- C++20 trae muchos cambios
- funciones descontinuadas, reordenamiento de operadores de comparación, cambios en las reglas de agregación...
- Problemas
- La guía de estilo de Google está basada en C++17
- El soporte de C++20 en Clang está incompleto y requiere un
libc++ más nuevo
- Los binarios de Windows aumentan de tamaño
- Se descontinúa el soporte de
std::iterator (desde C++17)
- Se agregan nuevas palabras clave como
concept y requires, lo que genera conflictos si ya existen como nombres de variables
- Y muchos más
6 comentarios
Eh… ¿no se supone que un lenguaje del nivel de C++ no debería generar tantos cambios incompatibles?… ¿O solo es una idea fija mía?…
Por eso C++ es un lenguaje raro... El lenguaje sigue actualizándose y le agregan módulos, corrutinas y un montón de cosas más, como si quisiera hacerlo todo, y cuando sale una función, los compiladores la incorporan 4 o 5 años después, y hay diferencias entre lo que puede hacer cada compilador, además de pequeñas diferencias de sintaxis, y con cada actualización van desapareciendo poco a poco cosas que uno usaba bien, y la STL se hace más grande y, con las nuevas versiones, ya no corre en computadoras de la vieja escuela... Si van a usar algo, la verdad les diría que usen Go o Python.
Los elementos en los que no se mantuvo la compatibilidad hacia atrás al subir de versión
son, en su mayoría, casos en los que se mejoraron comportamientos indefinidos o funciones con defectos.
Funciones como módulos, conceptos y corrutinas muestran que el lenguaje sigue evolucionando, igual que otros lenguajes.
En particular, en el caso de los módulos, era un requisito que ya se venía pidiendo desde antes.
No estoy seguro de si la descontinuación del soporte para
std::iteratorentra en lo que usted mencionó de “mejorar funciones con comportamiento indefinido o defectos”.Sin embargo, los puntos en los que C++ se queda atrás frente a otros lenguajes son, en gran medida, los siguientes.
De estos, creo que el gran problema es que, debido al desinterés de la comunidad, hay muy pocos artículos de buena calidad y, por la poca cantidad de usuarios, los otros tres problemas no se resuelven.