Condividi tramite


Novità di C++ in Visual Studio 2022

Visual Studio 2022 offre numerosi aggiornamenti e correzioni al compilatore e agli strumenti di Microsoft C++. L'IDE di Visual Studio offre anche miglioramenti significativi delle prestazioni e della produttività e ora viene eseguito in modo nativo come applicazione a 64 bit.

Novità di C++ in Visual Studio versione 17.12

Data di rilascio: novembre 2024

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Novità per gli sviluppatori C++ in Visual Studio 2022 17.12
Libreria standard (STL) ha unito le funzionalità C++26 e C++23, le risoluzioni dei problemi LWG, i miglioramenti delle prestazioni, il comportamento avanzato e i bug corretti Log delle modifiche STL 17.12
Nuove funzionalità nell'IDE di Visual Studio 17.12 Note sulla versione di Visual Studio 2022 versione 17.12
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.12 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 17.12

Una rapida evidenziazione di alcune delle nuove funzionalità:

  • Miglioramenti della libreria standard
    • Implementazione degli intervalli di formattazione (P2286R8) C++23 completata. Aggiunta di formattatori per gli adattatori stackcontenitore , queuee priority_queue.
    • Aggiunta di operatori pedice multidimensionali, che supportano <mdspan>anche . Ad esempio: print("m[{}, {}]: '{}'; ", i, j, m[i, j]).
  • Sviluppo di giochi in C++
  • Compilare informazioni dettagliate
    • È possibile eseguire Build Insights nei file selezionati. Selezionare i file desiderati nel Esplora soluzioni, fare clic con il pulsante destro del mouse e scegliere Esegui Informazioni dettagliate compilazione nei file selezionati:Screenshot dei file nella Esplora soluzioni. Il menu di scelta rapida è aperto e l'opzione Esegui Informazioni dettagliate compilazione nei file selezionati è evidenziata.
    • È possibile filtrare i risultati di Build Insights in base al progetto. Fare clic sul pulsante filtro nell'intestazione della colonna del filtro e selezionare i progetti per cui si desidera visualizzare i risultati: Screenshot della finestra Build Insights con la scheda File inclusi aperta. Il pulsante filtro è stato selezionato e viene visualizzato un elenco di progetti. Le caselle di controllo accanto a Due progetti sono selezionate.
    • Facendo clic sull'icona del punto interrogativo nella finestra Build Insights (Compila informazioni dettagliate) per visualizzare una breve descrizione delle schede nella finestra Build Insights (Compila informazioni dettagliate) e un collegamento alla documentazione per una spiegazione dettagliata: Screenshot della finestra Build Insights con il pulsante visualizza spiegazioni (un punto interrogativo in un cerchio) evidenziato.
  • GitHub Copilot
    • È possibile fare clic su Ask Copilot accanto al valore di una variabile per ottenere informazioni dettagliate guidate dall'intelligenza artificiale su ciò che ha portato allo stato corrente. Ad esempio, il programma seguente presenta un errore off-by-one nella condizione del ciclo:

    Screenshot della finestra Auto. La variabile denominata è NULL. Accanto all'icona Ask Copilot è evidenziata l'icona Ask Copilot.

    Il codice che ha causato questo problema è: per (auto = h.animals_.begin(); <= h.animals_.end(); it++).

    Se si fa clic sull'icona Ask Copilot per la it variabile, verrà illustrato perché è <NULL>:

    Screenshot di una finestra di GitHub Copilot.

    Questo errore si trova all'interno di una funzione definita come int calculate_number_of_cats(const house& h). Il messaggio di GitHub Copilot indica: "Il valore dell'espressione è NULL, il che significa che l'iteratore non punta ad alcun elemento valido nel vettore animals_. Nel contesto del programma, dovrebbe scorrere il vettore animals_ nell'oggetto house per contare il numero di oggetti cat. Perché è null. In base alle variabili locali e al contesto dello stack di chiamate: l'oggetto house h ha un vettore di animals_ vuoto (size=0). La condizione del ciclo <= h.animals_.end() non è corretta. Dovrebbe essere != h.animals_.end()."

    • È possibile fare clic su Chiedi a Copilot informazioni sugli errori nell'elenco degli errori di Visual Studio per ottenere assistenza sull'errore e su una correzione suggerita. Ad esempio:

    Screenshot della finestra Elenco errori.

    L'icona Ask Copilot è evidenziata accanto a un errore che unique_ptr sta tentando di fare riferimento a una funzione eliminata.

    Se si fa clic su Ask Copilot, viene indicato l'errore:

    Screenshot della spiegazione di GitHub Copilot per l'errore.

    Il messaggio di Copilot indica: "L'errore si verifica perché il ciclo for basato sull'intervallo tenta di copiare gli oggetti std::unique_ptr, che non è consentito perché non è possibile copiare std::unique_ptr. Per risolvere questo problema, il ciclo è stato modificato in modo da usare un riferimento per evitare di copiare gli oggetti std::unique_ptr. In questo modo, il ciclo scorre i riferimenti agli oggetti std::unique_ptr consentiti."

  • Debug
    • Nuovi visualizzatori di debug per mutex, recursive_mutexe move_iterator.
    • Il debugger visualizza ora i valori restituiti inline: Screenshot di una descrizione comando che mostra il valore 8.25. È il risultato dell'espressione che segue l'istruzione return su cui è stato eseguito il failover.

Novità di C++ in Visual Studio versione 17.11

Data di rilascio: agosto 2024

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Novità per gli sviluppatori C++ in Visual Studio 2022 17.11
Libreria standard (STL) ha unito le funzionalità C++26 e C++23, i report dei difetti C++20, le risoluzioni dei problemi LWG, i miglioramenti delle prestazioni, il comportamento avanzato e i bug corretti Log modifiche STL 17.11
Nuove funzionalità nell'IDE di Visual Studio 17.11 Note sulla versione di Visual Studio 2022 versione 17.11
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.11 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 17.11

Elenco parziale delle nuove funzionalità:

  • Miglioramenti della libreria standard

    • L'implementazione dell'output formattato include std::range_formatter ora i formattatori per std::pair e std::tuple.
    • Aggiunta del supporto per std::println() senza argomenti. In questo modo viene stampata una riga vuota come proposta in P3142R0.
    • Miglioramento della vettorizzazione per diversi algoritmi, tra cui replace_copy(), ranges::replace_copyreplace_copy_if(), find_first_of() ranges::replace_copy_ife ranges::find_first_of, per elementi a 8 bit e a 16 bit, , mismatch()ranges::mismatchcount() find()ranges::findranges::count, ranges::find_laste .ranges::iota
  • Sviluppo di giochi in C++

    • È ora possibile aggiungere modelli di classe, moduli e plug-in comuni di Unreal Engine da Visual Studio. Per altre informazioni, vedere Aggiungere classi, moduli e plug-in un motore Unreal in Visual Studio.
    • La nuova barra degli strumenti di Unreal Engine consente di accedere rapidamente alle azioni correlate a Unreal Engine da Visual Studio. La barra degli strumenti consente di collegarsi rapidamente ai processi di Unreal Engine, di ripetere l'analisi della cache blueprints, di accedere rapidamente al log del motore Unreal e di accedere rapidamente alla pagina di configurazione del motore unreal per Visual Studio. Per altre informazioni, vedere Barra degli strumenti del motore Unreal.
    • È ora possibile filtrare i risultati della traccia in base al progetto. Inoltre, i risultati in ogni riga mostrano il percorso relativo e il nome del file anziché il percorso completo. Anche il raggruppamento dei risultati nella visualizzazione File inclusi è migliorato:

    Screenshot dei risultati di diagnostica dei file inclusi migliorati.

    La vista File inclusi include una nuova colonna per il progetto. La colonna Progetto è selezionata e vengono selezionati progetti come (Seleziona tutto), CompilerIdC, OpenAL, common e così via. I file inclusi sono elencati in base al percorso relativo e al nome file e raggruppati.

  • Debug di CMake

    • È ora possibile eseguire il debug degli script e CMakeLists.txt dei file CMake nel debugger di Visual Studio per i progetti CMake destinati a Linux tramite sottosistema Windows per Linux (WSL) o SSH. Per avviare una sessione di debug di CMake in Visual Studio, impostare un punto di interruzione nel CMakeLists.txt file e quindi passare a Progetto>Configura cache con debug CMake.
  • GitHub Copilot

    • Quando si passa il puntatore del mouse sui simboli nell'editor di codice, fare clic sul pulsante Copilot Tell me more (Informazioni rapide) nella finestra di dialogo Informazioni rapide per altre informazioni su un determinato simbolo:

    Screenshot della finestra Informazioni rapide.

    La finestra Informazioni rapide viene visualizzata sopra una funzione. Il collegamento Dimmi altro è evidenziato.

    • GitHub Copilot può generare suggerimenti di denominazione per gli identificatori (variabili, metodi o classi) in base al modo in cui viene usato l'identificatore e lo stile del codice.

      Screenshot della finestra di dialogo Rinomina copilot di GitHub.

      La finestra di dialogo Rinomina include un campo Nuovo nome con un elenco a discesa che mostra le opzioni seguenti: text_color, font_color, display_color, console_color e menu_text_color.

    È necessaria una sottoscrizione di GitHub Copilot attiva. Fare clic con il pulsante destro del mouse sulla variabile da rinominare e scegliere Rinomina (Ctrl+R, Ctrl+R). Selezionare l'icona sparkle di GitHub Copilot per generare suggerimenti di denominazione.

  • Debug

    • I punti di interruzione condizionali in C++ sono più veloci.
  • Miglioramenti della diagnostica

    • Miglioramento della diagnostica durante la chiamata std::get<T> a un std::tuple oggetto con più istanze di T negli argomenti del modello. MSVC usato per segnalare:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Ora segnala:
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • Diagnostica migliorata quando std::ranges::to non è possibile costruire il risultato richiesto. MSVC usato per segnalare:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Ora segnala:
      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)'

Novità di C++ in Visual Studio versione 17.10

Data di rilascio: maggio 2024

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Novità per gli sviluppatori C++ in Visual Studio 2022 17.10
Libreria standard (STL) ha unito le funzionalità C++26 e C++23, i report dei difetti C++20, le risoluzioni dei problemi LWG, i miglioramenti delle prestazioni, il comportamento avanzato e i bug corretti Log delle modifiche STL 17.10
Nuove funzionalità nell'IDE di Visual Studio 17.10 Note sulla versione di Visual Studio 2022 versione 17.10
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.10 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 17.10

Elenco parziale delle nuove funzionalità:

  • Aggiornamento del set di strumenti MSVC: la versione del set di strumenti MSVC viene aggiornata dalla versione 19.39 alla versione 19.40. Ciò può influire sui progetti con presupposti di versione. Per altre informazioni su alcuni modi in cui ciò influisce sui progetti che presuppongono che le versioni MSVC siano tutte 19.3X per Visual Studio 2022, vedere MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10.
  • Miglioramenti della libreria standard: la libreria standard ha aggiunto il supporto per i puntatori di formattazione P2510R3, che porta il set di identificatori di formato per i puntatori quando si usa std::format più in linea con quelli già esistenti per i numeri interi. Sono stati migliorati le implementazioni vettorializzate di std::min_element, std::ranges::mine amici.
  • Informazioni dettagliate sulla compilazione: fornisce ora informazioni sulla creazione di istanze del modello. Vedere Visualizzazione modelli per Informazioni dettagliate sulla compilazione in Visual Studio o la visualizzazione Pure Virtual C++ - Templates per Build Insights in Visual Studio recording (Informazioni dettagliate compilazione in Visual Studio ).
  • Plug-in unreal Engine: è disponibile una nuova funzionalità di consenso esplicito per l'esecuzione del plug-in unreal Engine in background, riducendo i costi di avvio. Si tratta di una funzionalità di consenso esplicito attivata tramite Strumenti>Opzioni>Unreal Engine.
  • Nuove funzionalità per Linux: vedere Nuove funzionalità di sviluppo linux in Visual Studio.
  • Destinazioni CMake: è ora possibile aggiungere destinazioni nella visualizzazione Destinazioni CMake.
  • Gestione connessioni'esperienza utente: l'esperienza utente offre un'esperienza più semplice per la connessione a sistemi remoti. Per altre informazioni, vedere Miglioramenti dell'usabilità in Visual Studio Gestione connessioni.
  • Commenti delle richieste pull: è ora possibile visualizzare i commenti di GitHub e Azure DevOps direttamente nel file di lavoro. Abilitare il flag di funzionalità, i commenti delle richieste pull in Opzioni>Funzionalità di anteprima dell'ambiente>ed eseguire il checkout del ramo di richiesta pull per iniziare.
  • Contenuto generato dall'intelligenza artificiale: GitHub Copilot può ora elaborare le descrizioni delle richieste pull. Richiede una sottoscrizione di GitHub Copilot attiva. Provare facendo clic sull'icona a forma di penna Aggiungi descrizione richiesta pull generata dall'intelligenza artificiale all'interno della finestra Crea richiesta pull.
  • Anteprima immagine: passare il puntatore del mouse su un percorso di immagine per visualizzare un'anteprima con i dettagli delle dimensioni. La dimensione è limitata a 500 px wide e high.

    Screenshot dell'anteprima al passaggio del mouse.

    Il mouse passa il puntatore del mouse sulla riga std::filesystem::p ath vs_logo_path = ".. /images/vs_logo.png". Sotto viene visualizzata un'anteprima del logo di Visual Studio e le informazioni relative alle dimensioni di 251 x 500 pixel e 13,65 KB.

  • Creazione di punti di interruzione/punto di analisi: è ora possibile creare punti di interruzione condizionali o punti di traccia direttamente dalle espressioni nel codice sorgente dal menu di scelta rapida. Questa operazione funziona su nomi di proprietà o campi e valori da auto, variabili locali, finestre espressioni di controllo o Suggerimenti dati.
  • Connetti alla finestra di dialogo Processo: la funzionalità fornita dalla finestra di dialogo Connetti a processo è più facile da usare. È ora possibile passare facilmente tra visualizzazioni ad albero e elenco, organizzare i processi meglio con sezioni comprimibili e selezionare i tipi di codice con una casella combinata semplificata. Inoltre, la funzionalità "Select/Track Window" è ora più facile da usare, consentendo il rilevamento bidirezionale: la selezione di un processo evidenzia la finestra e facendo clic su una finestra viene selezionato il processo.
  • Integrazione di GitHub Copilot: le estensioni GitHub Copilot e Copilot Chat sono ora unificate e ora vengono fornite direttamente in Visual Studio. Per installarlo, installare il componente GitHub Copilot nel Programma di installazione di Visual Studio:

    Screenshot dell'opzione di installazione di GitHub Copilot Programma di installazione di Visual Studio.

    L'interfaccia di GitHub Copilot si trova nell'angolo superiore destro di Visual Studio. Per usarlo, è necessaria una sottoscrizione di GitHub Copilot attiva.

    Screenshot del pulsante GitHub Copilot.

    Il pulsante GitHub Copilot viene visualizzato nell'angolo superiore destro di Visual Studio. Include opzioni per aprire una finestra di chat, le impostazioni di GitHub Copilot, altre informazioni e gestire la sottoscrizione di Copilot.

Novità di C++ in Visual Studio versione 17.9

Data di rilascio: febbraio 2024

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Novità per gli sviluppatori C++ in Visual Studio 2022 17.9
Funzionalità unite della libreria standard (STL) C++23, miglioramenti delle prestazioni, comportamento avanzato, risoluzione dei problemi LWG e bug corretti Log modifiche STL 17.9
Nuove funzionalità nell'IDE di Visual Studio 17.9 Note sulla versione di Visual Studio 2022 versione 17.9
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.9 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022
Riepilogo degli aggiornamenti back-end C++ Aggiornamenti back-end MSVC a partire da Visual Studio 2022 versione 17.3

Elenco parziale delle nuove funzionalità:

  • #include diagnostica, che fornisce un'analisi dettagliata delle #include direttive. Attivare questa funzionalità facendo clic con il pulsante destro del mouse su un e #include scegliendo #include direttive>Attiva diagnostica direttiva #include. Sopra ogni #include è il numero di volte in cui il codice fa riferimento a tale #include file. Fare clic sul collegamento di riferimento per passare alla posizione in cui il codice usa un elemento del file di intestazione. Per visualizzare il tempo di compilazione delle #include direttive, eseguire Build Insights passando a Build Run Build Insights on Solution Build Build Insights (Compila>informazioni dettagliate compilazione nella compilazione della soluzione).>

    Screenshot della diagnostica #include.

    Sopra # include è un collegamento **reference** e molti dei riferimenti a questo file di inclusione # (in questo caso 1). Viene elencato anche il tempo di compilazione (in questo caso inferiore a 1/2 secondi).

  • Visualizzazione del layout di memoria, che mostra come viene disposta la memoria per le classi, gli struct e le unioni. Passare il puntatore del mouse su un tipo e scegliere il collegamento Layout memoria in Informazioni rapide per aprire una finestra dedicata che visualizza il layout di memoria del tipo selezionato. Passando il puntatore del mouse sui singoli tipi di dati all'interno di questa finestra, vengono fornite informazioni dettagliate sulle dimensioni e l'offset all'interno del tipo.

    Screenshot della finestra del layout di memoria

    La finestra del layout di memoria mostra il contenuto della classe Snake. Mostra gli offset di memoria dei vari campi della classe, ad esempio le classi Point per la posizione della testa e del corpo, il punteggio e così via.

  • È ora possibile specificare il proprio eseguibile CMake personalizzato. Questa funzionalità è utile se si vuole usare una versione specifica di CMake non fornita con Visual Studio. Passare a Opzioni strumenti>e selezionare CMake General (Generale CMake).> Selezionare Abilita eseguibile CMake personalizzato e specificare il percorso della directory dell'eseguibile CMake.

    Screenshot della finestra di dialogo delle opzioni di CMake

    La finestra di dialogo Opzioni CMake con l'opzione "Abilita eseguibile CMake personalizzato" e il campo "Directory eseguibile CMake" evidenziato.

  • IntelliSense migliorato per i progetti unreal Engine.
  • Miglioramento del supporto di C++23: std::format eformattablestd::span , range_format, format_kinde set_debug_format() come parte di P2286R8 Intervalli<mdspan> di formattazione per P0009R18 e modifiche successive di formulazione applicate allo standard C++23. Inoltre, format() può formattare i puntatori per P2510R3.

Novità di C++ in Visual Studio versione 17.8

Data di rilascio: novembre 2023

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Novità per gli sviluppatori C++ in Visual Studio 2022 17.8
Libreria standard (STL) unita a C++26, funzionalità C++23, estensioni C++20, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti Log modifiche STL 17.8
Nuove funzionalità nell'IDE di Visual Studio 17.8 Note sulla versione di Visual Studio 2022 versione 17.8
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.8 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022
Panoramica dei miglioramenti di C++ in Visual Studio, VS Code e vcpkg durante il 2023 Un anno di miglioramenti di C++

Elenco parziale delle nuove funzionalità:

  • Diagnostica strutturata C++ nella finestra Output e una nuova finestra dei dettagli del problema che fornisce altre informazioni sull'errore. Per altre informazioni, vedere Structured SARIF Output and Problem Details Window .For more information, see Structured SARIF Output and Problem Details Window.
  • Funzionalità che consente di visualizzare le dimensioni e l'allineamento delle classi, degli struct, delle unioni, dei tipi di base o delle enumerazioni anche prima della compilazione del codice. Passare il puntatore del mouse sull'identificatore e visualizzare le informazioni sulle dimensioni e sull'allineamento.
  • Funzionalità che suggerisce quando contrassegnare le funzioni const membro perché non modificano lo stato dell'oggetto. Passare il puntatore del mouse su una funzione membro e fare clic sull'icona della lampadina per contrassegnare la funzione come const.
  • Visual Studio richiede ora di contrassegnare le funzioni globali come statiche tramite un'icona del cacciavite visualizzata dal nome della funzione. Fare clic sull'icona del cacciavite per contrassegnare la funzione come statica.
  • Le direttive #include inutilizzate vengono disattivate nell'editor. È possibile passare il puntatore del mouse su un oggetto dimmed include e usare il menu lampadina per rimuovere che includono o tutte le inclusioni inutilizzate. È anche possibile aggiungere #include direttive per le entità incluse indirettamente tramite altre intestazioni. Per altre informazioni, vedere Pulire C/C++ include in Visual Studio.
  • Supporto di un motore Unreal:
    • Unreal Engine Test Adapter consente di individuare, eseguire, gestire ed eseguire il debug dei test del motore Unreal senza uscire dall'IDE di Visual Studio.
    • Con i frammenti di codice di Unreal Engine è possibile trovare costrutti unreal engine comuni come frammenti di codice nell'elenco dei membri.
    • Build Insights è ora integrato con Visual Studio 2022 e funziona con progetti MSBuild e CMake usando MSVC. È ora possibile visualizzare informazioni aggiuntive sulla compilazione di una funzione, ad esempio il tempo necessario per la compilazione e il numero di ForceInlines e l'impatto dei file di intestazione sul tempo di compilazione. Per altre informazioni, vedere Esercitazione: Risolvere i problemi di inlining delle funzioni in fase di compilazione ed Esercitazione: Risolvere l'impatto del file di intestazione sul tempo di compilazione.
  • Il supporto di unit test di Linux remoti consente ora di eseguire i test CTest e GTest nei computer Linux remoti da Esplora test di Visual Studio, proprio come i test locali.

Novità di C++ in Visual Studio versione 17.7

Data di rilascio: agosto 2023

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Novità per gli sviluppatori C++ in Visual Studio 2022 17.7
Nuove funzionalità C++ specifiche per lo sviluppo di giochi Scatenando la potenza di Visual Studio 2022 per lo sviluppo di giochi C++
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti Log modifiche STL 17.7
Nuove funzionalità nell'IDE di Visual Studio 17.7 Note sulla versione di Visual Studio 2022 versione 17.7
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.7 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022

Elenco parziale delle nuove funzionalità:

  • Sessioni di debug più veloci e tempi di caricamento del progetto più veloci
  • Visualizzazione dettagliata dell'espansione di macro
  • Download con un clic per sottosistema Windows per Linux (WSL)
  • Supporto migliorato per i commenti Doxygen
  • C++ Build Insights for game development (Informazioni dettagliate sulla compilazione di C++ per lo sviluppo di giochi)
  • Aggiunta /std:clatest per il compilatore C.
  • Miglioramenti del progetto Unreal Engine, ad esempio intelliSense più veloce e colorazione della sintassi, la possibilità di trovare tutti i riferimenti a Progetto motore Unreal e altro ancora.

Novità di C++ in Visual Studio versione 17.6

Data di rilascio: maggio 2023

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Novità per gli sviluppatori C++ in Visual Studio 2022 17.6
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti Log modifiche STL 17.6
Nuove funzionalità nell'IDE di Visual Studio 17.6 Note sulla versione di Visual Studio 2022 versione 17.6
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.6 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022

Un elenco parziale di nuove funzionalità include:

  • Debug di script CMake
  • Supporto predefinito per il linguaggio HLSL (High Level Shading Language)
  • Visualizzatore log del motore unreal
  • VCPKG viene ora aggiunto per impostazione predefinita
  • Supporto iniziale per C++20 nei progetti C++/CLI e alcune funzionalità della libreria standard C++23 per gli intervalli.

Novità di C++ in Visual Studio versione 17.5

Data di rilascio: febbraio 2023

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Novità per gli sviluppatori C++ in Visual Studio 2022 17.5
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti Log modifiche STL 17.5
Nuove funzionalità nell'IDE di Visual Studio 17.5 Note sulla versione di Visual Studio 2022 versione 17.5

Un elenco parziale di nuove funzionalità include:

  • std::move, std::forward, std::move_if_noexcepte std::forward_like ora non producono chiamate di funzione nel codice generato, anche in modalità di debug. Questa modifica evita i cast denominati che causano un sovraccarico non necessario nelle compilazioni di debug. /permissive- (o un'opzione che la implica, ad esempio /std:c++20 o std:c++latest) è obbligatoria.

  • Aggiunta di [[msvc::intrinsic]]. È possibile applicare questo attributo a funzioni non ricorsive costituite da un singolo cast, che accetta un solo parametro.

  • Aggiunta del supporto per la console Linux nel terminale integrato, che consente l'I/O del terminale.

  • Aggiunta del supporto sperimentale iniziale per le primitive atomiche C11 (<stdatomic.h>). È possibile abilitare questa funzionalità sperimentale con l'opzione /experimental:c11atomics in /std:c11 modalità o versione successiva.

  • È stato aggiunto un nuovo set di controlli sperimentali ad alta confidenza al controllo della durata per ridurre il rumore.

  • Una nuova funzionalità di anteprima, Remote Esplora file, consente di visualizzare la directory dei file nei computer remoti all'interno di Visual Studio e di caricare e scaricare i file.

  • Modifica del controllo delle versioni degli eseguibili CMake forniti con Visual Studio in modo che corrispondano alle versioni di Kitware.

  • Aggiunta del supporto per Ricaricamento rapido al modello di progetto CMake.

  • Vai a definizione per C++ ora usa un indicatore più sottile dell'operazione che richiede più tempo, sostituendo il dialogo modale delle versioni precedenti.

  • È stata avviata l'implementazione di un esperimento che offre risultati più intelligenti nell'elenco di membri e completamento automatico C++. Questa funzionalità era precedentemente nota come IntelliSense predittiva, ma ora usa un nuovo metodo di presentazione.

  • Viene ora fornito un set di strumenti Clang Arm64 nativo con il carico di lavoro LLVM, consentendo la compilazione nativa nei computer Arm64.

  • Aggiunta della localizzazione all'estensione Image Watch (questa estensione è disponibile nel Marketplace e non è in bundle tramite il Programma di installazione di Visual Studio).

  • Aggiunta del supporto per l'apertura di una finestra del terminale nel contenitore per sviluppatori attualmente in esecuzione.

  • Sono stati apportati diversi miglioramenti all'espansione di macro IntelliSense. In particolare, è stata abilitata l'espansione ricorsiva in più contesti e sono state aggiunte opzioni al popup per copiare l'espansione negli Appunti o espandere la macro inline.

  • Il monitoraggio simultaneo è ora supportato in Monitoraggio seriale. Il monitoraggio simultaneo consente di monitorare più porte contemporaneamente. Premere il pulsante più per aprire un altro monitoraggio seriale e iniziare.

  • È ora possibile visualizzare le proprietà dalle classi di base modificate in un asset unreal Blueprint senza uscire da Visual Studio. Fare doppio clic in un riferimento progetto per una classe o una proprietà C++ per aprire Ue Asset Inspector in Visual Studio.

  • Abilitazione dell'esecuzione di DevContainers in un computer Linux remoto.

  • È stata abilitata la selezione di più destinazioni da compilare nella visualizzazione Destinazioni CMake.

  • Aggiunta del supporto per CMakePresets.json versione 5. Per informazioni sulle nuove funzionalità, vedere la documentazione di CMake.

  • Abilitazione di Esplora test per compilare e testare più destinazioni CMake in parallelo.

  • Aggiunta dell'opzione "Apri contenitore nel terminale" a Contenitori di sviluppo.

  • Implementazione delle funzionalità della libreria standard:

    • basic_format_stringP2508R1 , format_string,wformat_string
    • ranges::fold_leftP2322R6 , ranges::fold_righte così via.
    • views::zip P2321R2 (non include zip_transform, adjacente adjacent_transform)

Novità di C++ in Visual Studio versione 17.4

Data di rilascio: novembre 2022

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Novità per gli sviluppatori C++ in Visual Studio 2022 17.4
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti Log modifiche STL 17.4
Nuove funzionalità nell'IDE di Visual Studio 17.4 Note sulla versione di Visual Studio 2022 versione 17.4
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.4 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022

Elenco parziale delle nuove funzionalità nella versione 17.4:

  • Sono stati migliorati i messaggi di errore del compilatore per fornire informazioni più corrette e utili, in particolare per i concetti.

  • Aggiunta dell'opzione sperimentale MSVC per l'output /experimental:log<directory> della diagnostica SARIF strutturata nella directory specificata.

  • Aggiunta del supporto per gli attributi C23 a IntelliSense e avanzamento continuo nel supporto dei moduli C++20.

  • Miglioramento delle prestazioni di indicizzazione all'apertura di una nuova soluzione. I progetti di grandi dimensioni potrebbero vedere un miglioramento del 20-35% rispetto al 17,3.

  • Miglioramento dell'ottimizzazione dei valori restituiti denominati (NRVO):

    • NrVO è abilitato per i casi che comportano la gestione delle eccezioni o i cicli.
    • NrVO è abilitato anche in /Od se l'utente passa l'opzione /Zc:nrvo o /std:c++20 versione successiva o /permissive-.
    • È ora possibile disabilitare NRVO con l'opzione /Zc:nrvo- .
  • Aggiornata la versione di LLVM fornita con Visual Studio alla versione 15.0.1. Per altre informazioni su ciò che è disponibile, vedere le note sulla versione di LLVM e Clang .

  • Aggiunta del supporto a Visual Studio per artefatti vcpkg con progetti CMake. Per i progetti che includono un manifesto vcpkg, l'ambiente viene attivato automaticamente all'apertura del progetto. Altre informazioni su questa funzionalità sono disponibili nel post di blog relativo all'attivazione dell'ambiente vcpkg in Visual Studio .

  • È ora possibile usare i contenitori di sviluppo per i progetti C++. Altre informazioni su questa funzionalità sono disponibili nel post di blog Dev Containers for C++ (Contenitori di sviluppo per C++ ).

  • IntelliSense ora rispetta l'ordine delle intestazioni precluse quando uno di essi è un PCH. In precedenza, quando un PCH veniva usato tramite /Yu e incluso forzatamente tramite /FI, IntelliSense lo elaborava sempre prima, prima di qualsiasi altra intestazione inclusa tramite /FI. Questo comportamento non corrisponde al comportamento di compilazione. Con questa modifica, /FI le intestazioni vengono elaborate nell'ordine in cui vengono specificate.

  • Rimozione dei prefissi interni dai nomi CTest in Esplora test.

  • Aggiornamento della versione di CMake fornita con Visual Studio alla versione 3.24.1. Per informazioni dettagliate su ciò che è disponibile, vedere le note sulla versione di CMake.

  • Aggiornamento di Android SDK:

    • Gli script Ant sono stati rimossi, quindi gli utenti non visualizzano più modelli basati su Ant nella finestra di dialogo Nuovo progetto. Per informazioni sulla migrazione da modelli Ant a modelli Gradle, vedere Migrazione di compilazioni da Apache Ant
    • Aggiunta del supporto per la compilazione con NDK 23 e 24
    • Aggiornamento del componente NDK alla versione LTS 23
  • Aggiunta di implementazioni vettorializzate di ranges::min_element(), ranges::max_element()e ranges::minmax_element()

  • Continuiamo a tenere traccia degli ultimi sviluppi della standardizzazione C++. Il supporto per queste funzionalità di C++23 è disponibile includendo /std:c++latest nelle opzioni del compilatore:

    • ranges::containsP2302R4 ,ranges::contains_subrange

    • string_view P2499R0 costruttore di intervalli deve essereexplicit

    • auto(x)P0849R8 : decadimento nella lingua

      La parte del compilatore non è ancora implementata. La parte della libreria è stata implementata in modalità C++20 quando è stato implementato inizialmente il supporto degli intervalli.

    • P0881R7 <stacktrace>

    • P2301R1 aggiungere un pmr alias perstd::stacktrace

    • P1328R1 constexpr type_info::operator==()

    • ranges::iotaP2440R1 , ranges::shift_left,ranges::shift_right

    • P2441R2 views::join_with

  • Aggiunta di un'opzione "Navigazione dopo la creazione di dichiarazione/definizione" per consentire di scegliere il comportamento di spostamento della funzionalità Crea dichiarazione/definizione. È possibile scegliere tra la visualizzazione (impostazione predefinita) o l'apertura del documento o nessuna navigazione.

  • Le build arm64 di Visual Studio ora raggruppano le versioni arm64 di CMake e Ninja.

  • Aggiunta del supporto per I set di impostazioni di CMake versione 4. Per informazioni dettagliate su ciò che è disponibile, vedere le note sulla versione di CMake.

  • Le connessioni di sistema remote che usano il Gestione connessioni ora supportano proxy SSHJump. ProxyJump viene usato per accedere a un host SSH tramite un altro host SSH, ad esempio per accedere a un host dietro un firewall.

Novità di C++ in Visual Studio versione 17.3

Data di rilascio: agosto 2022

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Miglioramenti di C++ nella versione 17.3
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti Log modifiche STL 17.3
Nuove funzionalità nell'IDE di Visual Studio 17.3 Note sulla versione di Visual Studio 2022 versione 17.3
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.3 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022

Elenco parziale delle nuove funzionalità nella versione 17.3:

  • La toolchain Arm64EC non è più contrassegnata come sperimentale ed è pronta per l'uso in produzione.
  • Il terminale di Visual Studio può ora essere usato come client SSH con le connessioni SSH archiviate. Dopo aver installato C++ per Linux Tools, aprire la finestra degli strumenti del terminale. L'elenco a discesa Terminale viene popolato con le connessioni archiviate. Quando si seleziona una connessione, viene aperta una nuova finestra terminale in Visual Studio che mostra uno pseudo-terminale nel sistema remoto. Sono supportati tutti i caratteri di controllo, i colori e la consapevolezza posizionale del cursore.
  • Visual Studio può ora aggiungere modelli di classe Unreal Engine per i progetti UE. Per provare questa funzionalità, verificare che il supporto dell'IDE per Unreal Engine sia selezionato nel carico di lavoro Sviluppo di giochi con C++ nel Programma di installazione di Visual Studio. Quando si lavora a un progetto UE, fare clic con il pulsante destro del mouse nel progetto o in una cartella/filtro e scegliere Aggiungi>classe UE.
  • Passare a Definizione ora memorizza la firma precedente e si sposta di conseguenza quando una corrispondenza migliore non è disponibile( ad esempio, dopo aver modificato manualmente la firma di una coppia). La velocità di risposta di Go To All è migliorata. In precedenza, i risultati venivano visualizzati dopo l'interruzione della digitazione. Nella nuova esperienza i risultati vengono visualizzati durante la digitazione.
  • Nei contesti che richiedono enum il completamento dei tipi (ad esempio, assegnazioni a enum variabili, etichette case, tipo restituito enum e così via), l'elenco di completamento automatico viene ora filtrato in base ai soli enumeratori e costrutti correlati corrispondenti.
  • Aggiunta del supporto nuGet PackageReference per i progetti MSBuild C++/CLI destinati a .NET Core. Questa modifica è stata apportata per sbloccare codebase miste dalla possibilità di adottare .NET Core. Questo supporto non funziona per altri tipi di progetto C++ o per i tipi di progetto C++ destinati a .NET Framework. Non sono previsti piani per estendere il supporto packageReference ad altri scenari C++. Il team sta lavorando a esperienze separate che coinvolgono vcpkg per scenari non MSBuild e per aggiungere funzionalità maggiori.
  • È stata aggiunta una finestra monitoraggio seriale per lo sviluppo incorporato, disponibile tramite Debug>di Monitoraggio seriale di Windows.>
  • Indicizzazione C++ migliorata del 66% rispetto a 17,2.
  • Aggiornamento della versione di CMake fornita con Visual Studio alla versione 3.23. Per informazioni dettagliate su ciò che è disponibile, vedere le note sulla versione di CMake 3.23.
  • Aggiornamento delle versioni degli strumenti LLVM fornite con Visual Studio alla versione 14. Per informazioni dettagliate su ciò che è disponibile, vedere le note sulla versione di LLVM e Clang .
  • Aggiornamento del set di strumenti C++ di Dev 16.11 side-by-side alla versione 14.29.30145.00. La versione più recente del set di strumenti C++ di Dev 16.11 contiene importanti correzioni di bug, inclusa la correzione di tutti i report dei difetti C++20 rimanenti. Per altre informazioni sulle correzioni di bug, inclusi i report sui difetti di C++20 in Dev 16.11, vedere Note sulla versione di Visual Studio 2019 versione 16.11.14.
  • Sono stati apportati vari miglioramenti all'esperienza nell'editor dei moduli C++. Stiamo lavorando costantemente per migliorare la qualità dell'esperienza, ma incoraggiamo a provarli nella versione 17.3. Segnalare i problemi rimanenti tramite la community degli sviluppatori.

Novità di C++ in Visual Studio versione 17.2

Data di rilascio: maggio 2022

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Visual Studio 2022 17.2 è ora disponibile
Libreria standard (STL) unita a report di difetto C++20, funzionalità C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti Log modifiche STL 17.2
Nuove funzionalità nell'IDE di Visual Studio 17.2 Note sulla versione di Visual Studio 2022 versione 17.2
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.2 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022

Elenco parziale delle nuove funzionalità nella versione 17.2:

  • Aggiunta del supporto del compilatore per la deduplicazione delle funzionalità C++23, disponibile nell'opzione /std:c++latest .this
  • Aggiunta del supporto di IntelliSense per le funzionalità C++23 che this deducono e if consteval.
  • Aggiunta del supporto per il nome del parametro inline e l'hint di tipo, attivati premendo ALT+F1 o toccando due volte CTRL. Questo comportamento può essere personalizzato in Strumenti > Opzioni > Editor > di testo C/C++ > IntelliSense.
  • Aggiunta del supporto sperimentale per i moduli C++20 nei progetti CMake. Questo supporto è attualmente disponibile solo con il generatore di Visual Studio (MSBuild).
  • Nella versione 17.1 sono state introdotte le visualizzazioni RTOS e registro periferiche per sviluppatori incorporati. Continuiamo a migliorare le funzionalità di queste visualizzazioni con miglioramenti dell'usabilità nella versione 17.2:
    • La finestra degli strumenti RTOS è ora nascosta per impostazione predefinita. Impedisce la visualizzazione di una finestra degli strumenti con messaggi di errore non pertinenti quando non si usa un RTOS.
    • Quando si fa doppio clic su un oggetto RTOS nella finestra degli strumenti, viene aggiunto un controllo per l'oggetto .
    • Quando si selezionano i valori iniziale e finale per il puntatore dello stack nella finestra degli strumenti RTOS, viene aperto nella finestra della memoria.
    • Aggiunta della consapevolezza del thread per le destinazioni del dispositivo alla finestra dello stack di chiamate.
    • Gli utenti possono ora selezionare un'icona a forma di puntina accanto a periferiche, registri o campi per aggiungerli nella parte superiore della visualizzazione periferica.
  • Sono state aggiunte implementazioni dei report dei difetti di C++20 rimanenti (noti anche come backport). Tutte le funzionalità di C++20 sono ora disponibili nell'opzione /std:c++20 . Per altre informazioni sui backport implementati, vedere il progetto C++20 Defect Reports nel repository GitHub Microsoft/STL e il post di blog STL Completes /std:c++20 di MSVC.
  • Sono state aggiunte varie funzionalità della libreria C++23, disponibili nell'opzione /std:c++latest . Per altre informazioni sulle nuove funzionalità, vedere il log delle modifiche del repository STL.
  • Miglioramento delle prestazioni dell'indicizzazione C++ iniziale fino al 20%, a seconda della profondità del grafico di inclusione.

Novità di C++ in Visual Studio versione 17.1

Data di rilascio: febbraio 2022

Per ulteriori informazioni su Vedere
Novità per gli sviluppatori C++ Visual Studio 2022 17.1 è ora disponibile.
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti Log modifiche STL 17.1
Nuove funzionalità nell'IDE di Visual Studio 17.1 Note sulla versione di Visual Studio 2022 versione 17.1
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.1 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022

Elenco parziale delle nuove funzionalità nella versione 17.1:

  • Viene aggiunto un nuovo modello Configura set di impostazioni per configurare e compilare progetti CMake in un sistema macOS remoto con CMakePresets.json. È anche possibile avviare le destinazioni CMake in un sistema macOS remoto e quindi eseguire il debug in remoto nel debugger di Visual Studio supportato da GDB o LLDB.
  • È ora possibile eseguire il debug dei dump di core in un sistema macOS remoto da Visual Studio con LLDB o GDB.
  • Le versioni di Clang e LLVM fornite con Visual Studio vengono aggiornate alla versione 13.
  • L'integrazione CMake di Visual Studio è attiva solo quando un CMakeLists.txt oggetto viene identificato nella radice dell'area di lavoro aperta. Se un CMakeLists.txt oggetto viene identificato a un altro livello dell'area di lavoro, viene richiesto di attivare l'integrazione CMake di Visual Studio con una notifica.
  • Nuove visualizzazioni che consentono di controllare e interagire con i registri delle periferiche su microcontroller e oggetti RTOS (Real Time Operating Systems), disponibili tramite Debug>dei registri incorporati di Windows>
  • È stata aggiunta una nuova visualizzazione thread per i progetti RTOS, disponibile tramite Debug>di oggetti RTOS di Windows.> Per altre informazioni, vedere Embedded Software Development in Visual Studio.

Novità di C++ in Visual Studio versione 17.0

Data di rilascio: novembre 2021

Per ulteriori informazioni su Vedere
Nuove funzionalità nell'IDE di Visual Studio 17.0 Note sulla versione di Visual Studio 2022 versione 17.0
Libreria standard (STL) ha unito le funzionalità C++23 e C++26, i report dei difetti C++20, le risoluzioni dei problemi LWG, i miglioramenti delle prestazioni, il comportamento avanzato e i bug corretti Log delle modifiche STL 17.0
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.0 Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 17.10

Panoramica di alcune delle nuove funzionalità di Visual Studio 2022 versione 17.0:

  • L'IDE di Visual Studio, devenv.exe, è ora un'applicazione nativa a 64 bit.
  • Il set di strumenti MSVC ora usa l'hashing dell'origine SHA-256 nei record di debug. In precedenza, il set di strumenti usa MD5 per l'hashing di origine per impostazione predefinita.
  • Gli strumenti di compilazione v143 sono ora disponibili tramite il programma di installazione di Visual Studio e negli strumenti di compilazione autonomi.

Ricaricamento rapido per C++ nativo

  • Ricaricamento rapido per C++ consente di apportare molti tipi di modifiche al codice all'app in esecuzione e applicarle senza dover sospendere l'esecuzione dell'app con un punto di interruzione simile a un punto di interruzione.

In Visual Studio 2022, quando si avvia l'app nel debugger, è possibile usare il pulsante Ricaricamento rapido per modificare l'applicazione mentre è ancora in esecuzione. Questa esperienza è basata su modifica e continuazione nativa. Per altre informazioni sulle modifiche supportate, vedere Modifica e continuazione (C++).

  • Ricaricamento rapido supporta i progetti CMake e Open Folder.

Supporto di WSL2

  • È ora possibile compilare ed eseguire il debug in modo nativo in WSL2 senza stabilire una connessione SSH. Sono supportati entrambi i progetti CMake multipiattaforma e i progetti Linux basati su MSBuild.

Supporto migliorato di CMake

  • Aggiornata la versione di CMake fornita con Visual Studio alla versione 3.21. Per altre informazioni sulle funzionalità disponibili in questa versione, vedere le note sulla versione di CMake 3.21.

  • Le pagine di panoramica di CMake vengono aggiornate per supportare CMakePresets.json.

  • È ora possibile configurare e compilare i progetti CMake con CMake 3.21 e CMakePresets.json v3.

  • Visual Studio supporta ora l'opzione buildPresets.targets in CMakePresets.json. Questa opzione consente di compilare un subset di destinazioni nel progetto CMake.

  • Il menu Progetto nei progetti CMake è semplificato ed espone le opzioni "Elimina cache e riconfigura" e "Visualizza cache".

  • Implementazione dell'opzione del /scanDependencies compilatore per elencare le dipendenze del modulo C++20 per i progetti CMake, come descritto in P1689R5. Si tratta di un passo verso il supporto per la compilazione di progetti basati su moduli con CMake e stiamo lavorando per completare questo supporto nelle versioni successive.

Miglioramenti della libreria standard

Selezionare Miglioramenti della libreria standard (STL) evidenziati qui. Per un elenco completo delle nuove funzionalità, modifiche, correzioni di bug e miglioramenti delle prestazioni, vedere il log delle modifiche del team STL.

  • Sono stati aggiunti visualizzatori di debug per migliorare la visualizzazione dei tipi seguenti: , , (e i relativi iteratori), default_sentinel_t, , ranges::single_viewunreachable_sentinel_tranges::iota_view ranges::empty_view(e il relativo iteratore/sentinel), ranges::ref_view, , thread::idjthreadthread, , e u8string bind_front()source_locationfilesystem::path
  • Aggiunta [[nodiscard]] alla stoi() famiglia di funzioni in <string> e a varie funzioni in <locale> come le collate funzioni membro, has_facet()e le isalnum() famiglie e tolower() .
  • P0980R1 made std::string constexpr in VS 2019 16.10. Ora supportato per Clang.
  • P1004R2 made std::vector constexprin VS 2019 16.10. Ora supportato per Clang.

Funzionalità evidenziate di C++23

  • P1048R1 Aggiunta is_scoped_enumdi , un nuovo tratto per la libreria standard C++, che rileva se un tipo è un'enumerazione con ambito.
  • out_ptr()P1132R7 ,inout_ptr()
  • contains() P1679R3 For basic_string ebasic_string_view
  • to_underlying() P1682R3 per le enumerazioni
  • P2162R2 Consenti l'ereditarietà da std::variant
  • P2166R1 Proibire la basic_string costruzione e basic_string_view da nullptr. Questa modifica è una modifica che causa un'interruzione di origine. Il codice che in precedenza aveva un comportamento non definito in fase di esecuzione viene ora rifiutato con errori del compilatore.
  • P2186R2 Supporto di Garbage Collection rimosso. Questa modifica rimuove declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safety. In precedenza, queste funzioni non avevano alcun effetto.

Miglioramenti delle prestazioni evidenziati

  • <format> ora rileva quando scrive in un oggetto per un back_insert_iterator basic_string oggetto o e vectoresegue una chiamata più veloce a insert() in corrispondenza end() del contenitore.
  • Sono stati migliorate le prestazioni di std::find() e std::count() per vector<bool> 19x e 26x (volte, non per cento).
  • Abbiamo migliorato le prestazioni di std::count() per vector<bool>
  • std::byte ora ha le stesse prestazioni di unsigned char in reverse() e variant::swap()

Supporto di Clang e LLVM

  • Gli strumenti LLVM forniti con Visual Studio vengono aggiornati a LLVM 12. Per altre informazioni, vedere le note sulla versione di LLVM.

  • Il supporto Clang-cl è stato aggiornato a LLVM 12.

  • È ora possibile eseguire il debug dei processi in esecuzione in un sistema remoto da Visual Studio usando LLDB.

C++ AMP deprecato

  • Le intestazioni C++ AMP sono ora deprecate. L'inclusione <amp.h> in un progetto C++ genera errori di compilazione. Per disattivare gli errori, definire _SILENCE_AMP_DEPRECATION_WARNINGS. Per altre informazioni, vedere i collegamenti di deprecazione AMP.

Miglioramenti di IntelliSense

  • Sono stati apportati miglioramenti in IntelliSense C++ quando si fornisce l'evidenziazione della navigazione e della sintassi per i tipi da moduli importati e unità di intestazione. IntelliSense è un'area attiva di investimenti per noi. Aiutaci a migliorare: condividi i tuoi commenti e suggerimenti sulla community degli sviluppatori usando l'aiuto per>inviare commenti e suggerimenti.
  • Sono stati migliorate le prestazioni di IntelliSense C++ ottimizzando l'utilizzo delle intestazioni memorizzate nella cache e l'accesso al database dei simboli, offrendo tempi di caricamento migliorati per accedere al codice.
  • Linter del codice IntelliSense per C++ è ora attivo per impostazione predefinita, fornendo suggerimenti istantanei di tipo you-type e suggerimenti per correggere i difetti comuni del codice.
  • IntelliSense C++ per i progetti CMake ora funziona quando si usa un set di impostazioni con un nome visualizzato.

Aggiornamenti del carico di lavoro C++

  • Aggiornato a NDK r21 LTS nel carico di lavoro Sviluppo di applicazioni mobili C++.
  • Il carico di lavoro Sviluppo di giochi con C++ installa ora l'ultimo motore Unreal con supporto per Visual Studio 2022.

Miglioramenti dell'analisi del codice

  • L'analisi del codice applica ora che restituisce valori di funzioni annotate con _Check_return_ o _Must_inspect_result_ devono essere controllate.
  • Il rilevamento della dereferenziazione puntatore Null è migliorato negli strumenti di analisi del codice.
  • Aggiunta del supporto per gsl::not_null l'analisi del codice.
  • Supporto per Libfuzzer nell'opzione del /fsanitize=fuzzer compilatore.

Note sulla versione per le versioni precedenti

Sono disponibili anche le note sulla versione per le versioni precedenti di C++:

Problemi noti

C++ IntelliSense

Per altre informazioni su altri problemi aperti e sulle soluzioni alternative disponibili per C++ in Visual Studio 2022, vedere l'elenco dei problemi della community degli sviluppatori C++.

Feedback e suggerimenti

Ci piacerebbe sapere cosa ne pensi! È possibile segnalare un problema o suggerire una funzionalità usando l'icona Invia commenti e suggerimenti nell'angolo in alto a destra del programma di installazione o dell'IDE di Visual Studio o dall'invio>di commenti e suggerimenti. È possibile tenere traccia dei problemi usando Visual Studio Developer Community, in cui si aggiungono commenti o si trovano soluzioni. È anche possibile usufruire gratuitamente del supporto per l'installazione con Assistenza live chat.

Blog

Sfruttare le informazioni dettagliate e le raccomandazioni disponibili nel sito Blog per sviluppatori Microsoft per rimanere aggiornati su tutte le nuove versioni. I blog includono post approfonditi su un'ampia gamma di funzionalità. Il blog del team C++ e il blog di Visual Studio sono di particolare interesse.