Os novos recursos de C++ no GCC 15
(developers.redhat.com)- O GCC 15 adicionou em massa recursos do C++26 e também melhorou alguns recursos do C++23
- Os principais acréscimos incluem Pack Indexing, Variadic Friends, especificação do motivo de exclusão, condicionais com structured bindings e mais
- Novas opções do compilador e avisos também foram introduzidos, melhorando a experiência do desenvolvedor
- O suporte a módulos C++ foi reforçado, e houve otimizações na velocidade de compilação de templates
- O GCC 15 foi adotado como compilador padrão do Fedora 42 e em breve também será oferecido no Red Hat GCC Toolset
Os novos recursos de C++ no GCC 15
- O GCC 15.1 foi lançado em 25 de abril de 2025 e introduz de forma ampla recursos do C++26
- O padrão padrão ainda é
gnu++17, e é possível ativar os recursos mais recentes com-std=c++23,-std=c++26etc. - Os recursos de C++20, C++23 e C++26 ainda são experimentais (experimental)
Principais recursos do C++26
-
Pack Indexing
- Agora é possível acessar diretamente um elemento específico em argumentos de variadic template com a sintaxe
pack...[N] - Isso permite referenciar de forma limpa, por exemplo, o primeiro argumento sem truques de repetição
- Agora é possível acessar diretamente um elemento específico em argumentos de variadic template com a sintaxe
-
Especificação de atributos em Structured Bindings
- Agora é possível aplicar
[[attribute]]separadamente a cada variável em um structured binding - Por exemplo, é possível marcar apenas uma variável associada como
[[deprecated]]
- Agora é possível aplicar
-
Adição de descrição a funções deletadas
- A sintaxe
= delete("motivo")permite fornecer uma mensagem no erro de chamada de uma função deletada
- A sintaxe
-
Variadic Friends
- Em classes template, agora é possível declarar vários tipos como
friendde uma só vez - Isso é útil para reforçar o controle de acesso em padrões como o Passkey pattern
- Em classes template, agora é possível declarar vários tipos como
-
constexpr Placement New
- Agora é possível usar
std::allocatore placement new em contexto constexpr
- Agora é possível usar
-
Uso de structured bindings em condicionais
- Agora é possível declarar structured bindings dentro de condicionais
if,whileeswitch - A avaliação da condição é feita por uma variável interna gerada pelo compilador
- Agora é possível declarar structured bindings dentro de condicionais
-
Proibição de excluir tipos incompletos
- Se
deleteoudelete[]for usado em um tipo incompleto, ocorrerá erro de compilação no modo C++26
- Se
-
Aviso de vírgula de Oxford
- Em declarações de funções variádicas, o padrão de usar apenas
...sem, ...passa a gerar aviso no C++26
- Em declarações de funções variádicas, o padrão de usar apenas
-
Remoção da comparação de arrays
- Código que compara arrays com
==passa a ser tratado como erro - No C++20 isso era um aviso, mas agora foi elevado a erro de compilação no modo C++26
- Código que compara arrays com
-
Diretiva
#embed- Suporte a
#embed, que permite inserir dados binários diretamente no código-fonte
- Suporte a
Ainda não há comentários.