El lenguaje de programación C++ está estandarizado por ISO/IEC, quienes publican una revisión cada 3 años desde 2011. C++20 es el nombre de la revisión del año 2020, que sigue a C++17. La próxima revisión será C++23.
El estándar quedó técnicamente concluido por WG21 en la reunión en Praga en febrero de 2020 y pasó la aprobación final el 4 de septiembre de 2020. En octubre de 2020 se encontraba en la etapa de trabajo editorial final.
C++20 añade más características importantes que C++14 o C++17. Abajo se listan algunas de estas características.
Características nuevas
C++20 introdujo muchas características nuevas, siendo la versión que más cambios introdujo en el lenguaje. Las siguientes listas sólo mencionan algunas de estas características. El artículo Descripción de las nuevas características de C++20 profundiza en su descripción.
Principales novedades
De la multitud de cambios introducidos, cuatro características largamente esperadas y potencialmente transformadoras, conocidas como the big four, se destacan sobre el resto:
Características publicadas como Especificaciones Técnicas
Aquellas partes mayores que implican un gran trabajo de especificación se llevan a cabo de forma desacoplada de las versiones de C++ , y manejan su propio calendario. Estos trabajos se conocen como "Especificaciones Técnicas" abreviados TS (Technical Specification).
Paralelismo: Parallelism TS v2 (incluyendo bloques de tarea)
Características reprogramadas para futuros estándares
Una de las etapas en la preparación de cada versión consiste en determinar qué características solicitadas se incluyen en la versión actual, y cuáles se postergan.
La postergación de una característica no asegura su inclusión en la versión siguiente ni garantiza que alguna vez sea lanzada.
Una característica postergada sigue recibiendo atención, y su inclusión en una versión depende, entre otras cosas, del estado de avance de su especificación.
Entre las características reprogramadas es común encontrar aquellas que cuentan con su propia especificación técnica (lo que implica que siguen su propio calendario de especificación).
Algunas características reprogramadasː
Contratos
un grupo de estudio nuevo (SG21) ha sido formado para trabajar en una propuesta nueva
En el pasado los compiladores comenzaban a soportar parcialmente una versión de C++ a partir del momento de su publicación. En la actualidad los desarrolladores de compiladores importantes se anticipan al estándar final implementando soporte experimental para varias características a partir de los borradores.
Clang tiene soporte parcial C++20 habilitado con la opción -std=c++20 (versión 10 o posterior) o -std=c++2un (versión 9 y anteriores).
GCC Añadió soporte parcial y experimental de C++20 en 2017 en su versión 8 por medio de la opción -std=c++2a. Como Clang, GCC reemplazó esta opción con -std=c++20 en su versión 10. También tiene una opción para habilitar extensiones GNU junto con el soporte experimental de C++20, -std=gnu++20.
Microsoft Visual Studio soporta algunas características de C++20 a través de la opción std:c++latest.