Partilhar via


Novidades do C++ no Visual Studio 2022

O Visual Studio 2022 traz muitas atualizações e correções para o compilador e as ferramentas do Microsoft C++. O IDE do Visual Studio também oferece melhorias significativas no desempenho e na produtividade e agora é executado nativamente como um aplicativo de 64 bits.

Novidades do C++ no Visual Studio versão 17.11

Lançado em agosto de 2024

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ Novidades para desenvolvedores C++ no Visual Studio 2022 17.11
Recursos de C++26 e C++23 mesclados da Biblioteca Padrão (STL), relatórios de defeito do C++20, resoluções de problemas de LWG, aprimoramentos de desempenho, comportamento aprimorado e bugs corrigidos Registro de alterações do STL 17.11
Novos recursos no IDE do Visual Studio 17.11 Notas sobre a versão do Visual Studio 2022 versão 17.11
Melhorias de conformidade da linguagem C++ no Visual Studio 2022 17.11 Melhorias de conformidade do C++, alterações de comportamento e correções de bugs no Visual Studio 2022 17.11

Uma lista parcial de novos recursos:

  • Aprimoramentos da biblioteca padrão:

    • A implementação de saída formatada agora inclui std::range_formatter formatadores e formatadores para std::pair e std::tuple.
    • Adicionado suporte para std::println() sem argumentos. Isso imprime uma linha em branco, conforme proposto em P3142R0.
    • Vetorização aprimorada para vários algoritmos, incluindo , , , , e ranges::find_first_offind_first_of() , para elementos de 8 bits e 16 bits, mismatch(), ranges::mismatch, find()count() ranges::count, ranges::find, , ranges::find_laste .ranges::iotaranges::replace_copy_ifranges::replace_copyreplace_copy_if()replace_copy()
  • Desenvolvimento de jogos em C++

    • Agora você pode adicionar modelos, módulos e plug-ins comuns de classe do Unreal Engine de dentro do Visual Studio. Para obter mais informações, consulte Adicionar classes, módulos e plug-ins do Unreal Engine no Visual Studio.
    • A nova barra de ferramentas do Unreal Engine fornece acesso rápido às ações relacionadas ao Unreal Engine de dentro do Visual Studio. A barra de ferramentas permite que você se conecte rapidamente aos processos do Unreal Engine, verifique novamente o cache do Blueprints, acesse rapidamente o Log do Unreal Engine e forneça acesso rápido à Página de Configuração do Unreal Engine para Visual Studio. Para obter mais informações, consulte Barra de ferramentas do Unreal Engine.
    • Agora você pode filtrar os resultados do rastreamento por projeto. Além disso, os resultados em cada linha mostram o caminho relativo e o nome do arquivo em vez do caminho completo. O agrupamento de resultados na visualização Arquivos incluídos também foi aprimorado:

    Uma captura de tela dos resultados aprimorados do diagnóstico de Arquivos Incluídos.

    A visualização Arquivos Incluídos tem uma nova coluna para o projeto. A coluna Project é selecionada e projetos como (Select All), CompilerIdC, OpenAL, common e assim por diante são selecionados. Os arquivos incluídos são listados por caminho relativo e nome de arquivo e agrupados.

  • Depuração do CMake

    • Agora você pode depurar seus scripts e CMakeLists.txt arquivos do CMake no depurador do Visual Studio para projetos do CMake direcionados ao Linux por meio do WSL (Subsistema do Windows para Linux) ou SSH. Para iniciar uma sessão de depuração do CMake no Visual Studio, defina um ponto de interrupção no CMakeLists.txt arquivo e navegue até Configurar Cache do Project>com Depuração do CMake.
  • Copilot

    • Ao passar o mouse sobre os símbolos no editor de códigos, clique no botão Copilot Diga-me mais na caixa de diálogo Informações rápidas para saber mais sobre um determinado símbolo:

    Uma captura de tela da janela Informações rápidas.

    A janela Informações rápidas é mostrada acima de uma função. O link Conte-me mais é realçado.

    • O GitHub Copilot pode gerar sugestões de nomenclatura para seus identificadores (variáveis, métodos ou classes) com base em como seu identificador é usado e no estilo do seu código.

      Uma captura de tela da caixa de diálogo Renomear do GitHub Copilot.

      A caixa de diálogo Renomear tem um campo Novo nome com uma lista suspensa que mostra estas opções: text_color, font_color, display_color, console_color e menu_text_color.

    Você precisa de uma assinatura ativa do GitHub Copilot. Clique com o botão direito do mouse na variável que deseja renomear e escolha Renomear (Ctrl+R, Ctrl+R). Selecione o ícone de brilho do GitHub Copilot para gerar sugestões de nomenclatura.

  • Depuração

    • Os pontos de interrupção condicionais em C++ são significativamente mais rápidos.
  • Melhorias no diagnóstico

    • Diagnóstico aprimorado ao chamar std::get<T> um std::tuple que tem várias instâncias de em seus argumentos de T modelo. O MSVC costumava relatar:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Agora ele relata:
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • Diagnóstico aprimorado quando std::ranges::to não é possível construir o resultado solicitado. O MSVC costumava relatar:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Agora ele relata:
      error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'

Novidades sobre o C++ na versão 17.10 do Visual Studio

Lançado em maio de 2024

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ Novidades para desenvolvedores C++ no Visual Studio 2022 17.10
Recursos de C++26 e C++23 mesclados da Biblioteca Padrão (STL), relatórios de defeito do C++20, resoluções de problemas de LWG, aprimoramentos de desempenho, comportamento aprimorado e bugs corrigidos Log de mudanças da STL 17.10
Novos recursos no Visual Studio 17.10 IDE Notas sobre a versão do Visual Studio 2022 versão 17.10
Aprimoramentos de conformidade da linguagem C++ no Visual Studio 2022 17.10 Aprimoramentos de conformidade do C++, alterações de comportamento e correções de bug no Visual Studio 2022 17.10

Uma lista parcial de novos recursos:

  • Atualização do conjunto de ferramentas do MSVC: a versão do conjunto de ferramentas do MSVC é atualizada da versão 19.39 para a 19.40. Isso pode afetar projetos que têm suposições de versão. Para obter mais informações sobre algumas maneiras nas quais isso afetará projetos que pressupõem que as versões do MSVC são todas versões 19.3X para Visual Studio 2022, consulte Número de Versão Secundária do Conjunto de Ferramentas do MSVC 14.40 no VS 2022 v17.10.
  • Aprimoramentos da biblioteca padrão: a biblioteca padrão adicionou suporte para ponteiros de formatação P2510R3, que alinha o conjunto de especificadores de formato para ponteiros ao usar std::format mais com aqueles que já existem para inteiros. As implementações vetorizadas de std::min_element, std::ranges::min e semelhantes foram aprimoradas.
  • Build Insights: agora fornece informações de instanciação de modelo. Confira a gravação de Exibição de Modelos para Build Insights no Visual Studio ou C++ Virtual Puro – Exibição de modelos para Build Insights no Visual Studio.
  • Plug-in do Unreal Engine: há um novo recurso opcional para que o Plug-in do Unreal Engine seja executado em segundo plano, reduzindo os custos de inicialização. Esse é um recurso opcional que é ativado por meio de Ferramentas>Opções>Unreal Engine.
  • Novos recursos para Linux: confira Novos recursos de desenvolvimento do Linux no Visual Studio.
  • Destinos do CMake: agora você pode fixar destinos na Exibição de Destinos do CMake.
  • Experiência do Usuário do Gerenciador de Conexões: a experiência do usuário proporciona uma experiência mais perfeita ao se conectar a sistemas remotos. Para obter mais informações, confira Aprimoramentos de usabilidade no Gerenciador de Conexões do Visual Studio.
  • Comentários de pull request: agora você pode exibir seus comentários do GitHub e do Azure DevOps diretamente em seu arquivo de trabalho. Habilite o sinalizador de recurso, Comentários de Pull Request em Opções>Ambiente>Recursos de Ambiente e faça check-out do branch de pull request para começar.
  • Conteúdo gerado por IA: o GitHub Copilot agora pode elaborar descrições de pull request. Requer uma assinatura ativa do GitHub Copilot. Experimente clicando no ícone de caneta com brilho Adicionar Descrição do Pull Request Gerada por IA na janela Criar uma Pull Request.
  • Pré-visualização da imagem: passe o mouse sobre um caminho de imagem para ver uma pré-visualização com detalhes de tamanho. O tamanho é limitado a 500 px de largura e altura.

    Captura de tela da pré-visualização de focalização.

    O mouse está passando o mouse sobre a linha std::filesystem::path vs_logo_path = "../images/vs_logo.png". Abaixo aparece uma visualização do logotipo do Visual Studio e as informações de que ele tem 251 x 500 pixels e 13,65 KB de tamanho.

  • Criação de ponto de interrupção/ponto de rastreamento: agora você pode criar pontos de interrupção condicionais ou pontos de rastreamento diretamente de expressões no código-fonte no menu contextual. Isso funciona em nomes de propriedade ou de campo e valores de autos, locais, janelas de inspeção ou DataTips.
  • Caixa de diálogo Anexar ao Processo: a funcionalidade fornecida pela caixa de diálogo Anexar ao Processo é mais amigável. Agora você pode alternar facilmente entre os modos de exibição em árvore e em lista, organizar melhor os processos com seções recolhíveis e selecionar tipos de código com uma caixa de combinação simplificada. Além disso, o recurso "Selecionar/Rastrear Janela" agora é mais fácil de usar, permitindo o rastreamento bidirecional: selecionar um processo realça a janela correspondente e clicar em uma janela seleciona o processo correspondente.
  • Integração do GitHub Copilot: as extensões do GitHub Copilot e do Copilot Chat agora estão unificadas e agora são fornecidas diretamente no Visual Studio. Para instalá-lo, instale o componente do GitHub Copilot no Instalador do Visual Studio:

    Captura de tela da opção de instalação do GitHub Copilot do Instalador do Visual Studio.

    A interface do GitHub Copilot está no canto superior direito do Visual Studio. Para usá-lo, você precisa de uma assinatura ativa do GitHub Copilot.

    Captura de tela do botão do GitHub Copilot.

    O botão do GitHub Copilot é mostrado no canto superior direito do Visual Studio. Ele tem opções para abrir uma janela de chat, configurações do GitHub Copilot, saber mais e gerenciar a assinatura do copilot.

Novidades sobre o C++ na versão 17.9 do Visual Studio

Lançado em fevereiro de 2024

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ Novidades para desenvolvedores C++ no Visual Studio 2022 17.9
Recursos de C++23 mesclados da Biblioteca Padrão (STL), aprimoramentos de desempenho, comportamento aprimorado, resoluções de problemas LWG e bugs corrigidos Log de mudanças STL 17.9
Novos recursos no Visual Studio 17.9 IDE Notas sobre a versão do Visual Studio 2022 versão 17.9
Aprimoramentos de conformidade da linguagem C++ no Visual Studio 2022 17.9 Aprimoramentos de conformidade do C++, alterações de comportamento e correções de bug no Visual Studio 2022
Resumo das atualizações de back-end do C++ Atualizações do Back-end do MSVC desde a versão 17.3 do Visual Studio 2022

Uma lista parcial de novos recursos:

  • Diagnóstico de #include, que fornece uma análise detalhada de suas diretivas #include. Ative esse recurso clicando com o botão direito do mouse em uma #include e escolhendo diretivas #include>Ativar diagnóstico de diretiva #include. Acima de cada #include está o número de vezes que o código faz referência a esse arquivo #include. Clique no link de referência para navegar até onde seu código usa algo desse arquivo de cabeçalho. Para exibir o tempo de compilação de suas diretivas #include, execute o Build Insights navegando até Build>Executar Build Insights na Solução>Compilar.

    Captura de tela do diagnóstico de #include.

    Acima do # include está um link **reference** e muitas das referências a este # include file (neste caso, 1). O tempo de build também é listado (nesse caso, menos de meio segundo).

  • Visualização de layout de memória, que mostra como a memória é organizada para suas classes, structs e uniões. Passe o mouse sobre um tipo e escolha o link Layout de Memória nas Informações Rápidas para abrir uma janela dedicada exibindo o layout de memória do tipo selecionado. Passar o mouse sobre tipos de dados individuais nessa janela fornece informações detalhadas sobre o tamanho deles e o deslocamento dentro do tipo.

    Captura de tela da janela de layout de memória

    A janela de layout de memória mostra o conteúdo da classe Snake. Ele mostra os deslocamentos de memória dos vários campos da classe, como classes de pontuação para o local da cabeça e do corpo, a pontuação e assim por diante.

  • Agora você pode especificar seu executável CMake personalizado. Esse recurso será útil se você quiser usar uma versão específica do CMake que não seja enviada com o Visual Studio. Navegue até Ferramentas>Opções e selecione CMake>Geral. Selecione Habilitar executável CMake personalizado e especifique o caminho do diretório do executável do CMake.

    Captura de tela da caixa de diálogo Opções do CMake

    A caixa de diálogo de opções do CMake com a opção "Habilitar executável CMake personalizado" e o campo "Diretório do Executável do CMake" realçados.

  • Suporte aprimorado do IntelliSense para projetos do Unreal Engine.
  • Suporte aprimorado do C++23: std::format e std::spanformattable, range_format, format_kind e set_debug_format() como parte de P2286R8 intervalos de formatação P0009R18<mdspan> por P0009R18 e alterações de redação subsequentes que foram aplicadas ao Padrão C++23. Além disso, format() pode formatar ponteiros por P2510R3.

Novidades sobre o C++ na versão 17.8 do Visual Studio

Lançado em novembro de 2023

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ Novidades para desenvolvedores C++ no Visual Studio 2022 17.8
Recursos do C++26 e C++23 mesclados da Biblioteca Padrão (STL), extensões do C++20, resoluções de problemas de LWG, aprimoramentos de desempenho, comportamento aprimorado e bugs corrigidos Log de mudanças da STL 17.8
Novos recursos no Visual Studio 17.8 IDE Notas sobre a versão 17.8 do Visual Studio 2022
Aprimoramentos de conformidade da linguagem C++ no Visual Studio 2022 17.8 Aprimoramentos de conformidade do C++, alterações de comportamento e correções de bug no Visual Studio 2022
Uma visão geral dos aprimoramentos do C++ no Visual Studio, VS Code e vcpkg durante 2023 Um ano de melhorias no C++

Uma lista parcial de novos recursos:

  • Diagnóstico estruturado do C++ na janela Saída e uma nova janela de detalhes do problema que fornece mais informações sobre o erro. Para obter mais informações, consulte Saída estruturada SARIF e Janela de detalhes do problema.
  • Um recurso que permite visualizar o tamanho e o alinhamento de suas classes, structs, uniões, tipos base ou enumerações antes mesmo de o código ser compilado. Passe o mouse sobre o identificador e uma Informação Rápida exibirá as informações de tamanho e alinhamento.
  • Um recurso que sugere quando marcar funções membro const porque elas não modificam o estado do objeto. Passe o mouse sobre uma função membro e clique no ícone de lâmpada para marcar a função como const.
  • Agora, o Visual Studio solicita que você marque as funções globais como estáticas por meio de um ícone de chave de fenda que é exibido pelo nome da função. Clique no ícone da chave de fenda para marcar a função como estática.
  • As diretivas de #include não utilizadas são esmaecidas no editor. Você pode passar o mouse sobre uma inclusão esmaecida e usar o menu de lâmpada para remover essa inclusão ou todas as inclusões não utilizadas. Você também pode adicionar diretivas #include para entidades que estão incluídas indiretamente por meio de outros cabeçalhos. Para obter mais informações, consulte Limpar inclusões do C/C++ no Visual Studio.
  • Mais suporte ao Unreal Engine:
  • O suporte remoto de teste de unidade do Linux agora permite executar seus testes CTest e GTest em seus computadores Linux remotos a partir do Gerenciador de Testes do Visual Studio, assim como seus testes locais.

Novidades sobre o C++ na versão 17.7 do Visual Studio

Lançado em agosto de 2023

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ Novidades para desenvolvedores C++ no Visual Studio 2022 17.7
Novos recursos do C++ específicos para o desenvolvimento de jogos Liberando o poder do Visual Studio 2022 para o desenvolvimento de jogos do C++
Recursos de C++23 mesclados da Biblioteca Padrão (STL), aprimoramentos de desempenho, comportamento aprimorado, resoluções de problemas LWG e bugs corrigidos Log de mudanças STL 17.7
Novos recursos no Visual Studio 17.7 IDE Notas sobre a versão do Visual Studio 2022 versão 17.7
Aprimoramentos de conformidade da linguagem C++ no Visual Studio 2022 17.7 Aprimoramentos de conformidade do C++, alterações de comportamento e correções de bug no Visual Studio 2022

Uma lista parcial de novos recursos:

  • Sessões de depuração mais rápidas e tempos de carregamento de projeto mais rápidos
  • Visualização passo a passo da expansão da macro
  • Download com um clique para o Subsistema do Windows para Linux (WSL)
  • Suporte aprimorado para comentários Doxygen
  • C++ Build Insights para o desenvolvimento de jogos
  • Adicionado /std:clatest para o compilador C.
  • Melhorias no projeto Unreal Engine, como IntelliSense mais rápido e colorização de sintaxe, capacidade de localizar todas as referências do Unreal Engine Blueprint e muito mais.

Novidades sobre o C++ na versão 17.6 do Visual Studio

Lançado em maio de 2023

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ Novidades para desenvolvedores do C++ no Visual Studio 2022 17.6
Recursos de C++23 mesclados da Biblioteca Padrão (STL), aprimoramentos de desempenho, comportamento aprimorado, resoluções de problemas LWG e bugs corrigidos Log de mudanças da STL 17.6
Novos recursos no Visual Studio 17.6 IDE Notas sobre a versão do Visual Studio 2022 versão 17.6
Aprimoramentos de conformidade da linguagem C++ no Visual Studio 2022 17.6 Aprimoramentos de conformidade do C++, alterações de comportamento e correções de bug no Visual Studio 2022

Uma lista parcial de novos recursos inclui:

  • Depuração de script CMake
  • Suporte interno para HLSL (Linguagem de Sombreamento de Alto Nível)
  • Visualizador de Logs do Unreal Engine
  • O VCPKG agora é adicionado por padrão
  • Suporte inicial para C++20 em projetos C++/CLI e alguns recursos de biblioteca padrão do C++23 para intervalos.

Novidades do C++ no Visual Studio versão 17.5

Lançado em fevereiro de 2023

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ Novidades para desenvolvedores do C++ no Visual Studio 2022 17.5
Recursos de C++23 mesclados da Biblioteca Padrão (STL), aprimoramentos de desempenho, comportamento aprimorado, resoluções de problemas LWG e bugs corrigidos Log de mudanças STL 17.5
Novos recursos no Visual Studio 17.5 IDE Notas sobre a versão do Visual Studio 2022 versão 17.5

Uma lista parcial de novos recursos inclui:

  • std::move, std::forward, std::move_if_noexcept e std::forward_like agora não produzem chamadas de função no código gerado, mesmo no modo de depuração. Essa alteração evita conversões nomeadas que causam sobrecarga desnecessária em builds de depuração. /permissive- (ou uma opção que implica isso, como /std:c++20 ou std:c++latest) é necessária.

  • [[msvc::intrinsic]] foi adicionado. Você pode aplicar esse atributo a funções não recursivas que consistem em uma única conversão e que recebem apenas um parâmetro.

  • Adicionado suporte para o Console do Linux no Terminal Integrado, que permite a E/S do terminal.

  • Adicionado suporte experimental inicial para primitivos atômicos C11 (<stdatomic.h>). Você pode habilitar esse recurso experimental com a opção /experimental:c11atomics no modo /std:c11 ou posterior.

  • Adicionado um novo conjunto de verificações experimentais de alta confiança ao Verificador de Tempo de Vida para redução de ruído.

  • Um novo recurso de visualização, Explorador de Arquivos Remoto, permite exibir o diretório de arquivos em seus computadores remotos no VS e carregar e baixar arquivos nele.

  • Alteração do controle de versão dos executáveis do CMake fornecidos com o Visual Studio para corresponder às versões do Kitware.

  • Adicionado suporte para Recarga Dinâmica ao modelo projeto do CMake.

  • Ir para Definição para C++ agora usa um indicador mais sutil da operação demorando mais tempo, substituindo a caixa de diálogo modal de versões anteriores.

  • A distribuição de um experimento foi iniciada fornecendo resultados mais inteligentes na lista de membros e preenchimento automático do C++. Essa funcionalidade era conhecida anteriormente como IntelliSense Preditivo, mas agora usa um novo método de apresentação.

  • Agora enviamos um conjunto de ferramentas nativo do Arm64 Clang com nossa carga de trabalho LLVM, permitindo a compilação nativa em computadores Arm64.

  • A localização foi adicionada à Extensão de Inspeção de Imagem (essa extensão está disponível no Marketplace e não é agrupada por meio do Instalador do Visual Studio).

  • Adicionado suporte para abrir uma janela do Terminal no Contêiner do Desenvolvedor em execução no momento.

  • Fez várias melhorias na expansão da macro do IntelliSense. Notavelmente, habilitamos a expansão recursiva em mais contextos e adicionamos opções ao pop-up para copiar a expansão para a área de transferência ou expandir a macro embutida.

  • O monitoramento simultâneo agora tem suporte no Monitor Serial. O monitoramento simultâneo permite monitorar várias portas ao mesmo tempo lado a lado. Pressione o botão de adição para abrir outro Monitor Serial e começar.

  • Agora você pode exibir propriedades de classes base modificadas em um ativo do Unreal Blueprint sem sair do Visual Studio. Clique duas vezes em uma referência de Blueprint para uma classe ou propriedade C++ para abrir o Inspetor de Ativos da UE no Visual Studio.

  • Execução habilitada de DevContainers em um computador Linux remoto.

  • Seleção habilitada de vários destinos a serem compilados na exibição Destinos do CMake.

  • Suporte adicionado para CMakePresets.json versão 5. Consulte a documentação do CMake para obter informações sobre novos recursos.

  • Habilitado o Gerenciador de Testes para criar e testar vários destinos do CMake em paralelo.

  • A opção "Abrir contêiner no terminal" foi adicionada aos Contêineres de Desenvolvimento.

  • Recursos da biblioteca padrão implementados:

    • P2508R1 basic_format_string, format_string, wformat_string
    • P2322R6 ranges::fold_left, ranges::fold_right e assim por diante.
    • P2321R2 views::zip (não inclui zip_transform, adjacent e adjacent_transform)

Novidades do C++ no Visual Studio versão 17.4

Lançado em novembro de 2022

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ Novidades para desenvolvedores do C++ no Visual Studio 2022 17.4
Recursos de C++23 mesclados da Biblioteca Padrão (STL), aprimoramentos de desempenho, comportamento aprimorado, resoluções de problemas LWG e bugs corrigidos Log de mudanças da STL 17.4
Novos recursos no Visual Studio 17.4 IDE Notas sobre a versão do Visual Studio 2022 versão 17.4
Aprimoramentos de conformidade da linguagem C++ no Visual Studio 2022 17.4 Aprimoramentos de conformidade do C++, alterações de comportamento e correções de bug no Visual Studio 2022

Uma lista parcial de novos recursos na versão 17.4:

  • Mensagens de erro do compilador aprimoradas para fornecer informações mais corretas e úteis, especialmente para conceitos.

  • A opção /experimental:log<directory> do MSVC experimental foi adicionada para gerar diagnósticos SARIF estruturados no diretório especificado.

  • Suporte adicionado para atributos C23 ao IntelliSense e progresso contínuo no suporte a módulos C++20.

  • Melhor desempenho de indexação ao abrir uma nova solução. Projetos grandes podem ver um aprimoramento de 20 a 35% em relação à versão 17.3.

  • Otimização de valor retornado nomeado aprimorada (NRVO):

    • O NRVO está habilitado para casos que envolvem tratamento de exceções ou loops.
    • O NRVO será habilitado mesmo em /Od se o usuário passar a opção /Zc:nrvo ou /std:c++20 posterior ou /permissive-.
    • Agora você pode desabilitar o NRVO com a opção /Zc:nrvo-.
  • Atualização da versão do LLVM fornecida com o Visual Studio para 15.0.1. Para obter mais informações sobre o que está disponível, consulte as notas sobre a versão de LLVM e Clang.

  • Suporte adicionado ao Visual Studio para artefatos vcpkg com projetos do CMake. Para projetos que incluem um manifesto vcpkg, o ambiente é ativado automaticamente no projeto aberto. Saiba mais sobre esse recurso na postagem no blog Ativação do ambiente vcpkg no Visual Studio.

  • Agora você pode usar Contêineres de Desenvolvimento para seus projetos C++. Saiba mais sobre esse recurso em nossa postagem no blog Contêineres de Desenvolvimento para C++.

  • O IntelliSense agora respeita a ordem dos cabeçalhos pré-incluídos quando um deles é um PCH. Anteriormente, quando um PCH era usado por meio de /Yu e incluído à força via /FI, o IntelliSense sempre o processava primeiro, antes de qualquer outro cabeçalho incluído por meio de /FI. Esse comportamento não correspondeu ao comportamento do build. Com essa alteração, os cabeçalhos /FI são processados na ordem em que são especificados.

  • Foram removidos prefixos internos de nomes CTest no Gerenciador de Testes.

  • Atualizada a versão do CMake fornecida com o Visual Studio para a versão 3.24.1. Para obter detalhes sobre o que está disponível, consulte as notas sobre a versão do CMake.

  • Atualização do SDK do Android:

    • Os scripts Ant foram removidos, para que os usuários não vejam mais modelos baseados em Ant na caixa de diálogo Novo Projeto. Para obter ajuda para migrar modelos Ant para modelos Gradle, consulte Migrando builds do Apache Ant
    • Suporte adicionado para compilação com NDK 23 e 24
    • Componente NDK atualizado para o LTS versão 23
  • Adição de implementações vetorizadas de ranges::min_element(), ranges::max_element() e ranges::minmax_element()

  • Continuamos acompanhando os desenvolvimentos mais recentes na padronização do C++. O suporte para esses recursos do C++23 está disponível incluindo /std:c++latest nas opções do compilador:

    • P2302R4 ranges::contains, ranges::contains_subrange

    • P2499R0 string_view O construtor de intervalo deve ser explicit

    • P0849R8 auto(x): decay-copy Na linguagem

      (A parte do compilador ainda não foi implementada. A parte da biblioteca foi implementada no modo C++20 quando o suporte a Intervalos foi implementado inicialmente.)

    • P0881R7 <stacktrace>

    • P2301R1 Adicionar A pmr Alias para std::stacktrace

    • P1328R1 constexpr type_info::operator==()

    • P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right

    • P2441R2 views::join_with

  • Adicionada uma opção "Navegação após Criar Declaração/Definição" para permitir que você escolha o comportamento de navegação do recurso Criar Declaração/Definição. Você pode selecionar entre espiar (o padrão) ou abrir o documento ou sem navegação.

  • Agora, os builds Arm64 do Visual Studio agrupam versões Arm64 do CMake e Ninja.

  • Adicionado suporte para predefinições do CMake versão 4. Para obter detalhes sobre o que está disponível, consulte as notas sobre a versão do CMake.

  • As conexões remotas do sistema usando o Gerenciador de Conexões agora dão suporte a ProxyJump SSH. ProxyJump é usado para acessar um host SSH por meio de outro host SSH (por exemplo, para acessar um host por trás de um firewall).

Novidades do C++ no Visual Studio versão 17.3

Lançado em agosto de 2022

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ Aprimoramentos do C++ na versão 17.3
Recursos de C++23 mesclados da Biblioteca Padrão (STL), aprimoramentos de desempenho, comportamento aprimorado, resoluções de problemas LWG e bugs corrigidos Log de mudanças da STL 17.3
Novos recursos no Visual Studio 17.3 IDE Notas sobre a versão do Visual Studio 2022 versão 17.3
Aprimoramentos de conformidade da linguagem C++ no Visual Studio 2022 17.3 Aprimoramentos de conformidade do C++, alterações de comportamento e correções de bug no Visual Studio 2022

Uma lista parcial de novos recursos na versão 17.3:

  • A cadeia de ferramentas Arm64EC não está mais marcada como experimental e está pronta para uso em produção.
  • O Terminal do Visual Studio agora pode ser usado como um cliente SSH com suas conexões SSH armazenadas. Com as Ferramentas do C++ para Linux instaladas, abra a janela da ferramenta Terminal. A lista suspensa Terminal é preenchida com suas conexões armazenadas. Quando você seleciona uma conexão, uma nova janela do Terminal é aberta dentro do Visual Studio que mostra um pseudo-terminal em seu sistema remoto. Há suporte para caracteres de controle, cores e reconhecimento posicional do cursor.
  • Agora, o Visual Studio pode adicionar modelos de classe do Unreal Engine para seus projetos da UE. Para experimentar esse recurso, verifique se o Suporte do IDE para Unreal Engine está selecionado na carga de trabalho Desenvolvimento de jogos com C++ no Instalador do Visual Studio. Quando estiver trabalhando em um projeto UE, clique com o botão direito do mouse no projeto ou em uma pasta/filtro e selecione Adicionar>Classe UE.
  • Vá para Definição agora lembra a assinatura anterior e navega de acordo quando uma correspondência melhor não está disponível (por exemplo, depois de alterar manualmente a assinatura de um dos pares). A capacidade de resposta do Ir Para Todos foi aprimorada. Anteriormente, os resultados apareciam depois que você parava de digitar. Na nova experiência, os resultados são mostrados conforme você digita.
  • Em contextos que exigem a conclusão do tipo enum (por exemplo, atribuições a variáveis enum, rótulos de caso, tipo de retorno enum e assim por diante), a lista de preenchimento automático agora é filtrada apenas para os enumeradores correspondentes e constructos relacionados.
  • Adicionado suporte ao PackageReference NuGet para projetos MSBuild do C++/CLI direcionados ao .NET Core. Essa alteração foi feita para desbloquear as bases de código mistas de serem capazes de adotar o .NET Core. Esse suporte não funciona para outros tipos de projeto C++ ou tipos de projeto C++ direcionando o .NET Framework. Não há planos para estender o suporte a PackageReference para outros cenários do C++. A equipe está trabalhando em experiências separadas envolvendo vcpkg para cenários não MSBuild e para adicionar maior funcionalidade.
  • Foi adicionada uma janela do Monitor Serial para desenvolvimento inserido, disponível por meio de Depurar>Windows>Monitor Serial.
  • Melhor indexação de C++ em ~66% em comparação com a versão 17.2.
  • Atualizada a versão do CMake fornecida com o Visual Studio para a versão 3.23. Confira as notas sobre a versão do CMake 3.23 para obter detalhes do que está disponível.
  • Atualizou as versões das ferramentas LLVM enviadas com o Visual Studio para v14. Para obter detalhes sobre o que está disponível, consulte as notas sobre a versão do LLVM e do Clang.
  • Atualizado o Conjunto de Ferramentas do Dev 16.11 C++ lado a lado para a versão 14.29.30145.00. A versão mais recente do Conjunto de Ferramentas do C++ do Dev 16.11 contém correções de bugs importantes, incluindo a correção de todos os relatórios de defeito restantes do C++20. Para obter mais informações sobre correções de bugs, incluindo relatórios de defeito do C++20 no Dev 16.11, consulte Notas sobre a versão do Visual Studio 2019 versão 16.11.14.
  • Feitas várias melhorias na experiência do editor de módulos C++. Estamos continuamente trabalhando para melhorar a qualidade da experiência, mas incentivamos você a experimentá-las na versão 17.3. Relatar os problemas restantes por meio da Developer Community.

Novidades do C++ no Visual Studio versão 17.2

Lançado em maio de 2022

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ O Visual Studio 2022 17.2 já está disponível
Relatórios de defeitos do C++20 mesclado da Biblioteca Padrão (STL), recursos do C++23, resoluções de problemas de LWG, aprimoramentos de desempenho, comportamento aprimorado e bugs corrigidos Log de mudanças da STL 17.2
Novos recursos no Visual Studio 17.2 IDE Notas sobre a versão do Visual Studio 2022 versão 17.2
Aprimoramentos de conformidade da linguagem C++ no Visual Studio 2022 17.2 Aprimoramentos de conformidade do C++, alterações de comportamento e correções de bug no Visual Studio 2022

Uma lista parcial de novos recursos na 17.2:

  • Suporte ao compilador adicionado para o recurso deduzindo this do C++23, disponível sob a opção /std:c++latest.
  • Adicionado suporte do IntelliSense para recursos do C++23 deduzindo this e if consteval.
  • Adicionado suporte à dica de tipo e ao nome de parâmetro embutido, alternado pressionando Alt+F1 ou tocando duas vezes em Ctrl. Esse comportamento pode ser personalizado em Ferramentas > Opções > Editores de texto > C/C++ > IntelliSense.
  • Adicionado suporte experimental para módulos C++20 em projetos do CMake. No momento, esse suporte só está disponível com o gerador do Visual Studio (MSBuild).
  • Na versão 17.1, apresentamos exibições de registro periférico e RTOS para desenvolvedores inseridos. Continuamos a melhorar as funcionalidades desses modos de exibição com melhorias de usabilidade no 17.2:
    • A janela da ferramenta RTOS agora está ocultada por padrão. Isso impede que uma janela de ferramenta seja exibida com mensagens de erro não relevantes quando você não está usando um RTOS.
    • Ao clicar duas vezes em um objeto RTOS na janela de ferramentas, uma inspeção é adicionada para o objeto.
    • Ao selecionar os valores de início e final para o ponteiro de pilha na janela de ferramentas do RTOS, ele é aberto na janela de memória.
    • Adicionado reconhecimento de thread para destinos de dispositivo à janela de pilha de chamadas.
    • Agora, os usuários podem selecionar um ícone de pino ao lado de periféricos, registros ou campos para fixá-los na parte superior da Exibição Periférica.
  • Adicionadas implementações dos relatórios de defeito do C++20 restantes (também conhecidos como backports). Todos os recursos do C++20 agora estão disponíveis na opção /std:c++20. Para obter mais informações sobre os backports implementados, confira o projeto Relatórios de defeitos C++20 no repositório GitHub da Microsoft/STL e a postagem no blog STL do MSVC completa /std:c++20.
  • Adicionamos vários recursos da Biblioteca C++23, disponíveis na opção /std:c++latest. Para obter mais informações sobre os novos recursos, confira a caixa Log de alterações de repositório STL.
  • Melhor desempenho da indexação inicial do C++ em até 20%, dependendo da profundidade do grafo de inclusão.

Novidades do C++ no Visual Studio versão 17.1

Lançado em fevereiro de 2022

Para obter mais informações sobre Consulte
Novidades para desenvolvedores do C++ O Visual Studio 2022 17.1 já está disponível.
Recursos de C++23 mesclados da Biblioteca Padrão (STL), aprimoramentos de desempenho, comportamento aprimorado, resoluções de problemas LWG e bugs corrigidos Log de mudanças da STL 17.1
Novos recursos no Visual Studio 17.1 IDE Notas de versão do Visual Studio 2022 versão 17.1
Aprimoramentos de conformidade da linguagem C++ no Visual Studio 2022 17.1 Aprimoramentos de conformidade do C++, alterações de comportamento e correções de bug no Visual Studio 2022

Uma lista parcial de novos recursos na versão 17.1:

  • Um novo modelo Configurar predefinição foi adicionado para configurar e compilar projetos do CMake em um sistema macOS remoto com CMakePresets.json. Você também pode iniciar destinos do CMake em um sistema macOS remoto e, em seguida, depurar remotamente no depurador do Visual Studio apoiado pelo GDB ou LLDB.
  • Você agora pode depurar despejos de depuração em um sistema macOS remoto a partir do Visual Studio com LLDB ou GDB.
  • As versões de Clang e LLVM enviadas com o Visual Studio foram atualizadas para a v13.
  • A integração do CMake do Visual Studio só está ativa quando um CMakeLists.txt é identificado na raiz do workspace aberto. Se um CMakeLists.txt for identificado em outro nível do workspace, você será solicitado a ativar a integração do CMake do Visual Studio com uma notificação.
  • Novas exibições que habilitam você a inspecionar e interagir com registros periféricos em microcontroladores e objetos de sistemas operacionais em tempo real (RTOS), disponíveis em Depurar>Windows>Registros Inseridos
  • Adicionada uma nova exibição de thread para projetos RTOS, disponível por meio de Depurar>Windows>Objetos RTOS. Para obter mais informações, consulte Desenvolvimento de software com inserção no Visual Studio.

Novidades do C++ no Visual Studio versão 17.0

Lançado em novembro de 2021

Para obter mais informações sobre Consulte
Novos recursos no Visual Studio 17.0 IDE Notas de versão do Visual Studio 2022 versão 17.0
Recursos de C++26 e C++23 mesclados da Biblioteca Padrão (STL), relatórios de defeito do C++20, resoluções de problemas de LWG, aprimoramentos de desempenho, comportamento aprimorado e bugs corrigidos Log de mudanças da STL 17.0
Aprimoramentos de conformidade da linguagem C++ no Visual Studio 2022 17.0 Aprimoramentos de conformidade do C++, alterações de comportamento e correções de bug no Visual Studio 2022 17.10

Uma visão geral de alguns dos novos recursos no Visual Studio 2022 versão 17.0:

  • O IDE do Visual Studio, devenv.exe, agora é um aplicativo nativo de 64 bits.
  • O conjunto de ferramentas MSVC agora usa o padrão de hash de origem SHA-256 em registros de depuração. Anteriormente, o conjunto de ferramentas usava MD5 para hash de origem por padrão.
  • As ferramentas de build v143 agora estão disponíveis por meio do instalador do Visual Studio e nas ferramentas de build autônomas.

Recarga Dinâmica para C++ nativo

  • A Recarga Dinâmica para C++ possibilita fazer muitos tipos de edições de código no aplicativo em execução e aplicá-las sem precisar pausar a execução com algo como um ponto de interrupção.

No Visual Studio 2022, ao iniciar seu aplicativo no depurador, você pode usar o botão Recarga Dinâmica para modificar seu aplicativo enquanto ele ainda estiver em execução. Essa experiência é alimentada por Edição e Continuação nativas. Para obter mais informações sobre as edições compatíveis, confira Editar e continuar (C++).

  • Recarga Dinâmica permite projetos CMake e Open Folder.

Suporte ao WSL2

  • Agora você pode compilar e depurar nativamente no WSL2 sem estabelecer uma conexão SSH. Há suporte para projetos CMake multiplataforma e projetos Linux baseados em MSBuild.

Suporte aprimorado do CMake

  • Atualizada a versão do CMake fornecida com o Visual Studio para a versão 3.21. Para obter mais informações sobre o que está disponível nesta versão, confira as Notas sobre a versão do CMake 3.21.

  • As Páginas de Visão Geral do CMake estão atualizadas para dar suporte ao CMakePresets.json.

  • Agora você pode configurar e compilar seus projetos do CMake com o CMake 3.21 e CMakePresets.json v3.

  • O Visual Studio agora permite a opção buildPresets.targets em CMakePresets.json. Essa opção permite criar um subconjunto de destinos no seu projeto CMake.

  • O menu Projeto em projetos do CMake foi simplificado e expõe as opções "Excluir Cache e Reconfigurar" e "Exibir Cache".

  • Implementou a opção do compilador /scanDependencies para listar dependências de módulo C++20 para projetos do CMake, conforme descrito em P1689R5. É um passo em direção ao suporte para a criação de projetos baseados em módulos com o CMake e estamos trabalhando para concluir esse suporte em versões posteriores.

Aprimoramentos da Biblioteca Padrão

Melhorias de Select Standard Library (STL) são destacadas aqui. Para obter uma lista abrangente de novas funcionalidades, alterações, correções de bugs e melhorias de desempenho, confira o Log de alterações da equipe do STL.

  • Foram adicionados visualizadores de depuração para melhorar a forma como os seguintes tipos são exibidos: source_location, bind_front(), u8string (e seus iteradores), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (e seu iterator/sentinela), ranges::ref_view, thread, thread::id, jthread e filesystem::path
  • [[nodiscard]] adicionado à família stoi() de funções em <string> e a várias funções em <locale>, como as funções de membro collate, has_facet(), e as famílias isalnum() e tolower().
  • P0980R1 Feito std::string constexpr no VS 2019 16.10. Agora há suporte para Clang.
  • P1004R2 Feito std::vector constexprno VS 2019 16.10. Agora há suporte para Clang.

Recursos do C++23 em destaque

  • is_scoped_enum adicionado a P1048R1, uma nova característica para a biblioteca C++ Standard, que detecta se um tipo é uma enumeração com escopo.
  • P1132R7 out_ptr(), inout_ptr()
  • P1679R3 contains() Para basic_string e basic_string_view
  • P1682R3 to_underlying() para enumerações
  • P2162R2 permite herdar de std::variant
  • P2166R1 proíbe construir basic_string e basic_string_view de nullptr. Essa alteração é uma alteração interruptiva do código. O código que anteriormente tinha um comportamento indefinido no runtime agora é rejeitado com erros do compilador.
  • P2186R2 removeu o suporte à coleta de lixo. Essa alteração remove declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safety. Anteriormente, essas funções não tinham efeito.

Melhorias de desempenho em destaque

  • <format> agora detecta quando está gravando em um back_insert_iterator para um basic_string ou um vector, e faz uma chamada mais rápida para insert() no end() do contêiner.
  • Melhoramos o desempenho de std::find() e std::count() para vector<bool> 19x e 26x (vezes, não por cento).
  • Melhoramos o desempenho de std::count() para vector<bool>
  • std::byte agora tem o mesmo desempenho que unsigned char em reverse() e variant::swap()

Suporte a Clang e LLVM

  • As ferramentas de LLVM enviadas com o Visual Studio estão atualizadas para a LLVM 12. Para obter mais informações, confira the Notas sobre a versão do LLVM.

  • O suporte Clang-cl foi atualizado para LLVM 12.

  • Agora você pode depurar processos em execução em um sistema remoto do Visual Studio usando o LLDB.

C++ AMP preterido

  • Cabeçalhos C++ AMP foram preteridos. Incluindo <amp.h> em um projeto C++ gera erros de build. Para silenciar os erros, defina _SILENCE_AMP_DEPRECATION_WARNINGS. Para obter mais informações, confira nossos links de depreciação do AMP.

Aprimoramentos do IntelliSense

  • Fizemos melhorias no IntelliSense C++ ao fornecer realce de navegação e sintaxe para tipos de módulos importados e unidades de cabeçalho. O IntelliSense é uma área ativa de investimento para nós. Ajude-nos a melhorar: compartilhe seus comentários sobre a Developer Community usando Ajuda>Enviar feedback.
  • Melhoramos o desempenho do IntelliSense do C++ otimizando o uso de cabeçalho armazenado em cache e o acesso ao banco de dados de símbolos, fornecendo tempos de carga aprimorados para entrar no seu código.
  • O Linter de Código do IntelliSense para C++ agora está ativado por padrão, fornecendo sugestões instantâneas conforme o tipo e sugestões de correção para defeitos de código comuns.
  • O C++ IntelliSense para projetos do CMake agora funciona ao usar uma predefinição com um nome de exibição.

Atualizações de carga de trabalho do C++

  • Atualizado para LTS NDK r21 na carga de trabalho Desenvolvimento móvel do C++.
  • O Desenvolvimento de jogos com carga de trabalho C++ agora instala o Mecanismo Unreal mais recente com suporte para Visual Studio 2022.

Melhorias na análise de código

  • A análise de código agora impõe que os valores retornados de funções anotadas com _Check_return_ ou _Must_inspect_result_ que precisa ser verificados.
  • A detecção de desreferência de ponteiro nulo foi aprimorada em nossas ferramentas de análise de código.
  • Suporte adicionado para gsl::not_null para análise de código.
  • Suporte para Libfuzzer na opção do compilador /fsanitize=fuzzer.

Notas sobre a versão para versões mais antigas

Notas sobre a versão para versões mais antigas do C++ também estão disponíveis:

Problemas conhecidos

C++ IntelliSense

Para obter mais informações sobre outros problemas abertos e soluções alternativas disponíveis para C++ no Visual Studio 2022, confira a lista de problemas do Developer Community C++.

Comentários e sugestões

Adoraríamos ouvir o que você tem para nos dizer! Você pode relatar um problema ou sugerir um recurso usando o ícone Enviar Comentários no canto superior direito do instalador ou do IDE do Visual Studio ou em Help>Enviar feedback. Você pode acompanhar seus problemas usando a Visual Studio Developer Community, em que você adiciona comentários ou encontra soluções. Você também pode obter ajuda gratuita com a instalação por meio de nosso suporte via chat ao vivo.

Blogs

Aproveite os insights e as recomendações disponíveis no site Blogs para Desenvolvedores da Microsoft para se manter atualizado de novas versões. Os blogs incluem postagens aprofundadas sobre uma grande variedade de recursos. O Blog da Equipe do C++ e o Blog do Visual Studio são de interesse específico.