Módulos (C++)

C++20 incorpora módulos, introduciendo por primera vez una alternativa real a la inclusión de encabezados y que permite evitar totalmente el uso del preprocesador.

Algunas consecuencias indeseadas:[1]​ Los módulos incorporados en C++20 presentan una alternativa a la inclusión de encabezados[2]​ que evita las consecuencias indeseadas mencionadas y mejora la expresividad y modularidad del código.

Incluso permite manejar el nivel de visibilidad de los símbolos exportados como globales o privados, según sean accesibles por todos o solamente por otros fragmentos del mismo módulo.

A priori parece una mera alternativa sintáctica al clásico #include, pero opera de manera diferente y más eficiente, y no es totalmente compatible: todos los headers estándar se han reescrito para ser importables, pero la manera de escribir headers propios para que sean importables depende del compilador.

[4]​ No cabe esperar que la inclusión de encabezados de bibliotecas existentes sea reemplazada por módulos, pero sí se espera que nuevas bibliotecas se escriban en términos de módulos en lugar de encabezados, y que la directiva #include vaya perdiendo protagonismo aunque no se vislumbra que se vuelva obsoleta.