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::generatorpara sequências lazy e corrigidos muitos problemas de desempenho e ergonomia das corrotinas do C++20. - Multithreading — novos mecanismos
std::latchestd::barrierpara sincronização de threads, além de umstd::counting_semaphoremelhorado.
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.