4 pontos por GN⁺ 2025-04-27 | Ainda não há comentários. | Compartilhar no WhatsApp
  • 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++26 etc.
  • 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
  • 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]]
  • 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
  • Variadic Friends

    • Em classes template, agora é possível declarar vários tipos como friend de uma só vez
    • Isso é útil para reforçar o controle de acesso em padrões como o Passkey pattern
  • constexpr Placement New

    • Agora é possível usar std::allocator e placement new em contexto constexpr
  • Uso de structured bindings em condicionais

    • Agora é possível declarar structured bindings dentro de condicionais if, while e switch
    • A avaliação da condição é feita por uma variável interna gerada pelo compilador
  • Proibição de excluir tipos incompletos

    • Se delete ou delete[] for usado em um tipo incompleto, ocorrerá erro de compilação no modo C++26
  • 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
  • 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
  • Diretiva #embed

    • Suporte a #embed, que permite inserir dados binários diretamente no código-fonte

Ainda não há comentários.

Ainda não há comentários.