C ++ 20 riceve l'approvazione tecnica finale

Dopo aver ottenuto l'approvazione tecnica finale dall'ISO il 4 settembre, C ++ 20 dovrebbe essere ufficialmente pubblicato verso la fine di quest'anno, introducendo nuove funzionalità come moduli e coroutine.

Progettato nel 1979 per la programmazione di sistemi, il C ++ rimane un linguaggio vitale. Il C ++ è stato persino trovato il linguaggio in più rapida crescita nell'indice Tiobe di settembre 2020, dove si colloca al quarto posto dietro C, Java e Python. Tiobe cita la specifica C ++ 20 come uno dei fattori che danno una spinta al linguaggio.

Le nuove funzionalità in C ++ 20 includono:

  • Moduli, che consentono ai programmatori di utilizzare componenti modulari.
  • Concetti, utilizzati per specificare i requisiti del modello e supportare la programmazione generica. I concetti promettono di migliorare la qualità del codice.
  • Una libreria di sincronizzazione, per un migliore supporto del controllo hardware dettagliato.
  • Miglioramenti al calcolo in fase di compilazione.
  • Coroutine, che generalizzano le subroutine per l'uso nel multi-tasking non preventivo. Tuttavia, manca ancora il supporto standardizzato per le coroutine nella libreria standard. Questo supporto è previsto per C ++ 23.
  • Gamme, che forniscono componenti per gestire gamme di elementi.
  • Macro di test delle funzionalità, un set di macro che corrispondono alle funzionalità di linguaggio e libreria da C ++ 11 o versioni successive.
  • Valori hash precalcolati nella ricerca.
  • Istruzioni di espansione per abilitare la ripetizione in fase di compilazione di un'istruzione per ogni elemento di una tupla, matrice, classe, pacchetto di parametri o intervallo.
  • Operazioni monadiche per std::optionalcode.
  • Creazione implicita di oggetti per la manipolazione di basso livello.
  • Riconoscimento sensibile al contesto migliorato importe moduleper aiutare gli strumenti non compilatori a determinare le dipendenze di compilazione.
  • Nuovi algoritmi rangificati.

È stata rimossa una funzionalità dei contratti prevista in C ++ 20 per specificare pre-condizioni, post-condizioni e asserzioni. Contracts è ora contrassegnato come elemento C ++ 23, anche se potrebbe non essere incluso in quella versione.