Novo padrão C++23: principais mudanças e melhorias na linguagem

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Lançado o novo padrão C++23: o que mudou e como isso afetará o desenvolvimento



O comitê internacional de padronização do C++ (ISO/IEC JTC1/SC22/WG21) aprovou oficialmente a nova versão da linguagem — C++23. Este release não é tão fundamental quanto o C++11 ou C++20, mas inclui muitas melhorias há muito esperadas que tornarão o código mais seguro, expressivo e eficiente. Vamos analisar as principais novidades que todo desenvolvedor C++ precisa conhecer.



Principais mudanças no C++23



  • Deducing this (P0847R7) — a novidade mais aguardada. Agora é possível especificar explicitamente o objeto no qual o método é chamado, simplificando a sobrecarga para lvalue/rvalue, versões constantes e não constantes, além de eliminar a duplicação de código em templates CRTP.
  • std::expected (P0323R12) — tipo para tratamento de erros sem exceções, alternativa ao std::optional e exceções. Permite retornar um valor ou um erro, o que é crítico para sistemas com requisitos rigorosos de desempenho.
  • Módulos std (P2465R3) — a biblioteca padrão agora é exportada através de módulos, acelerando a compilação e melhorando o isolamento do código. Por exemplo, import std; substitui dezenas de #include.
  • Melhorias em corrotinas — adicionado o tipo std::generator para sequências lazy e corrigidos muitos problemas de desempenho e ergonomia das corrotinas do C++20.
  • Multithreading — novos mecanismos std::latch e std::barrier para sincronização de threads, além de um std::counting_semaphore melhorado.


O que isso significa para os desenvolvedores?



O C++23 não quebra a compatibilidade reversa, mas introduz novas práticas. Por exemplo, deducing this simplifica a escrita de bibliotecas, e std::expected gradualmente substituirá verificações complexas de códigos de retorno. Muitos compiladores (GCC 13+, Clang 16+, MSVC 2022 17.6+) já suportam parte das funcionalidades.



Para quem trabalha com sistemas de alta carga, os módulos (aceleração de build em 20-40%) e o tratamento de erros melhorado sem exceções são especialmente importantes. Se você usa C++20, a migração para C++23 não exigirá reescrita de código — basta ativar a nova flag de compilação.



Quando esperar suporte completo?



O suporte completo ao C++23 é esperado nos compiladores até o final de 2024. Por enquanto, é possível testar funcionalidades individuais com as flags -std=c++2b (GCC/Clang) ou /std:c++latest (MSVC). Recomendamos começar com std::expected e deducing this — eles são os mais úteis em projetos reais.



Exemplos de código atualizados e comparação com C++20 podem ser encontrados na documentação dos compiladores. O C++23 é um passo evolutivo que torna a linguagem mais segura e conveniente, sem sacrificar o desempenho.

Recommended Libraries