- GCC 15 incorpora una gran cantidad de funciones de C++26 y también mejora algunas de C++23
- Entre las principales incorporaciones están Pack Indexing, Variadic Friends, especificación del motivo de eliminación, condicionales con binding estructurado y más
- También se introdujeron nuevas opciones del compilador y advertencias, mejorando la experiencia del desarrollador
- Se reforzó el soporte para módulos de C++ y se optimizó la velocidad de compilación de plantillas
- GCC 15 fue adoptado como compilador predeterminado en Fedora 42 y pronto también estará disponible en Red Hat GCC Toolset
Nuevas funciones de C++ en GCC 15
- GCC 15.1 se lanzó el 25 de abril de 2025 e introduce de lleno funciones de C++26
- El estándar predeterminado sigue siendo
gnu++17, y las funciones más recientes pueden activarse con -std=c++23, -std=c++26, etc.
- Las funciones de C++20, C++23 y C++26 siguen siendo experimentales
Principales funciones de C++26
-
Pack Indexing
- Ahora es posible acceder directamente a un elemento específico dentro de argumentos de Variadic Template con la sintaxis
pack...[N]
- Esto permite referenciar limpiamente el primer argumento, entre otros, sin recurrir a trucos repetitivos
-
Atributos en Structured Bindings
- Ahora se puede aplicar
[[attribute]] por separado a cada variable enlazada de forma estructurada
- Por ejemplo, se puede marcar solo una variable de binding con
[[deprecated]]
-
Agregar explicación a funciones eliminadas
- La sintaxis
= delete("razón") permite mostrar un mensaje en el error al llamar una función eliminada
-
Variadic Friends
- En clases template ahora se pueden declarar varios tipos como
friend de una sola vez
- Es útil para reforzar el control de acceso en patrones como Passkey pattern
-
constexpr Placement New
std::allocator y placement new pueden usarse en contexto constexpr
-
Uso de structured bindings en condicionales
- Se pueden declarar structured bindings dentro de condiciones
if, while y switch
- La evaluación de la condición se realiza mediante una variable interna generada por el compilador
-
Prohibición de eliminar tipos incompletos
- Si
delete o delete[] se usan sobre un tipo incompleto, en modo C++26 se produce un error de compilación
-
Advertencia por coma de Oxford
- En C++26 se emite advertencia cuando en declaraciones de funciones variádicas se usa solo
... sin , ...
-
Eliminación de comparación de arreglos
- El código que compara arreglos con
== pasa a tratarse como error
- En C++20 esto era una advertencia, pero ahora se elevó a error de compilación en modo C++26
-
Directiva #embed
- Soporte para
#embed, que permite insertar datos binarios directamente en el código fuente
Aún no hay comentarios.