C++ se encuentra en constante evolución. El primer proceso de estandarización internacional del lenguaje (ISO C++ 1998-2003) permitió la incorporación de técnicas de programación genérica y, con ellas, el desarrollo de una biblioteca estándar en la que algoritmos, estructuras de datos e iteradores se interrelacionaban de forma natural y eficiente.
Los estándares posteriores C++11/14/17 han proporcionado mejoras sustanciales al núcleo del lenguaje (inferencia automática de tipos, semántica de movimiento, inicialización uniforme, expresiones constantes, funciones lambda, etcétera), así como una notable extensión de la biblioteca estándar mediante la inclusión de punteros inteligentes, concurrencia, sistema de ficheros, expresiones regulares, tipos variantes y un largo etcétera.
El comité de estandarización se ha reunido recientemente en Kona (Hawaii, USA, Feb 18-23 2019) para concluir la especificación de C++20 [1]. El nuevo estándar promete revolucionar el modo en que pensamos y expresamos nuestro código, a la par que permanece fiel a los principios fundacionales de C++ (eficiencia, empleo de abstracciones de sobrecoste cero, retrocompatibilidad). Este post ofrece un breve adelanto de algunas de las principales funcionalidades incluidas en esta nueva versión del lenguaje:
- Módulos.
- Conceptos.
- Corrutinas.
- Contratos [Nota del autor: Esta funcionalidad fue retirada del estándar en el encuentro de Cologne en julio de 2019 para su reevaluación por parte del subgrupo de trabajo SG21].
- Rangos.