Nuevas funciones de C++ en GCC 15
(developers.redhat.com)- 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
- Ahora es posible acceder directamente a un elemento específico dentro de argumentos de Variadic Template con la sintaxis
-
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]]
- Ahora se puede aplicar
-
Agregar explicación a funciones eliminadas
- La sintaxis
= delete("razón")permite mostrar un mensaje en el error al llamar una función eliminada
- La sintaxis
-
Variadic Friends
- En clases template ahora se pueden declarar varios tipos como
friendde una sola vez - Es útil para reforzar el control de acceso en patrones como Passkey pattern
- En clases template ahora se pueden declarar varios tipos como
-
constexprPlacement Newstd::allocatory placement new pueden usarse en contexto constexpr
-
Uso de structured bindings en condicionales
- Se pueden declarar structured bindings dentro de condiciones
if,whileyswitch - La evaluación de la condición se realiza mediante una variable interna generada por el compilador
- Se pueden declarar structured bindings dentro de condiciones
-
Prohibición de eliminar tipos incompletos
- Si
deleteodelete[]se usan sobre un tipo incompleto, en modo C++26 se produce un error de compilación
- Si
-
Advertencia por coma de Oxford
- En C++26 se emite advertencia cuando en declaraciones de funciones variádicas se usa solo
...sin, ...
- En C++26 se emite advertencia cuando en declaraciones de funciones variádicas se usa solo
-
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
- El código que compara arreglos con
-
Directiva
#embed- Soporte para
#embed, que permite insertar datos binarios directamente en el código fuente
- Soporte para
Aún no hay comentarios.