Ricerca…


introduzione

Nel 1998, c'è stata una prima pubblicazione del C ++ standardizzato, un linguaggio standardizzato internamente. Da quel momento, C ++ si è evoluto risultando in diversi dialetti di C ++. In questa pagina, puoi trovare una panoramica di tutti i diversi standard e le loro modifiche rispetto alla versione precedente. I dettagli su come utilizzare queste funzionalità sono descritti su pagine più specializzate.

Osservazioni

Quando viene citato C ++, spesso viene fatto riferimento allo "Standard". Ma qual è esattamente quello standard?

C ++ ha una lunga storia. Iniziato come un piccolo progetto da Bjarne Stroustrup all'interno di Bell Labs, all'inizio degli anni '90 era diventato piuttosto popolare. Molte aziende stavano creando compilatori C ++ in modo che gli utenti potessero eseguire i propri compilatori C ++ su una vasta gamma di computer. Ma per facilitare questo, tutti questi compilatori concorrenti dovrebbero condividere una singola definizione della lingua.

A quel punto, il linguaggio C era stato standardizzato con successo. Ciò significa che è stata scritta una descrizione formale della lingua. Questo è stato presentato all'americana National Standards Institute (ANSI), che ha aperto il documento per la revisione e successivamente lo ha pubblicato nel 1989. Un anno dopo, l'Organizzazione internazionale per gli standard (poiché avrebbe sigle diverse in diverse lingue, ha scelto una forma , ISO, derivato dall'isos greco, che significa uguale) ha adottato lo standard americano come standard internazionale.

Per C ++, è stato chiaro fin dall'inizio che c'era un interesse internazionale. È stato avviato un gruppo di lavoro all'interno di ISO (noto come WG21, all'interno del sottocomitato 22). Questo gruppo di lavoro ha redatto un primo standard intorno al 1995. Ma come sappiamo i programmatori, non c'è nulla di più pericoloso per una consegna pianificata rispetto alle funzionalità dell'ultimo minuto, e ciò è accaduto anche al C ++. Nel 1995, una nuova fantastica libreria denominata STL emerse, e le persone che lavoravano nel WG21 decisero di aggiungere una versione ridotta allo standard di bozza del C ++. Naturalmente, questo ha fatto perdere le scadenze e solo 3 anni dopo il documento è diventato definitivo. ISO è un'organizzazione molto formale, quindi lo standard C ++ è stato battezzato con il nome non molto commerciabile di ISO / IEC 14882. Poiché gli standard possono essere aggiornati, questa versione esatta è diventata nota come 14882: 1998.

E infatti c'era una richiesta per aggiornare lo standard. Lo standard è un documento molto spesso, che mira a descrivere esattamente come i compilatori C ++ dovrebbero funzionare. Anche una leggera ambiguità può valere la pena di essere risolta, così nel 2003 è stato rilasciato un aggiornamento come 14882: 2003. Tuttavia, questo non ha aggiunto alcuna caratteristica al C ++; le nuove funzionalità sono state programmate per il secondo aggiornamento.

Informalmente, questo secondo aggiornamento era noto come C ++ 0x, perché non era noto se questo avrebbe richiesto fino al 2008 o al 2009. Bene, anche questa versione ha avuto un leggero ritardo, motivo per cui è diventato 14882: 2011.

Fortunatamente, il WG21 ha deciso di non permettere che accadesse di nuovo. C ++ 11 è stato ben accolto e lasciato ad un rinnovato interesse per C ++. Quindi, per mantenere lo slancio, il terzo aggiornamento è passato dalla pianificazione alla pubblicazione in 3 anni, fino a diventare 14882: 2014.

Anche il lavoro non si è fermato qui. È stato proposto lo standard C ++ 17 e il lavoro per C ++ 20 è stato avviato.

Bozze di lavoro correnti

Tutti gli standard ISO pubblicati sono disponibili per la vendita dallo store ISO ( http://www.iso.org ). Le bozze di lavoro degli standard C ++ sono pubblicamente disponibili gratuitamente.

Le diverse versioni dello standard:

C ++ 11

Lo standard C ++ 11 è un'estensione importante dello standard C ++. Di seguito è possibile trovare una panoramica delle modifiche così come sono state raggruppate nelle FAQ di isocpp con collegamenti a documentazione più dettagliata.

Estensioni della lingua

Caratteristiche generali

Classi

  • = predefinito e = cancella
  • Controllo dello spostamento e della copia predefiniti
  • Delegare i costruttori
  • Inizializzatori dei membri in classe
  • Costruttori ereditati
  • Comandi di sostituzione: override
  • Comandi di sostituzione: finale
  • Operatori di conversione espliciti

Altri tipi

  • classe enum
  • lungo lungo - un numero intero più lungo
  • Tipi interi estesi
  • Sindacati generalizzati
  • POD generalizzati

Modelli

  • Modelli esterni
  • Alias ​​modello
  • Modelli Variadic
  • Tipi locali come argomenti del modello

Concorrenza

Funzioni linguistiche varie

  • Qual è il valore di __cplusplus per C ++ 11?
  • Sintassi di tipo ritorno su suffisso
  • Prevenire il restringimento
  • Parentesi ad angolo retto
  • static_assert assertion in fase di compilazione
  • Letterali stringa grezzi
  • attributi
  • Allineamento
  • Funzionalità C99

Estensioni della libreria

Generale

  • unique_ptr
  • shared_ptr
  • weak_ptr
  • Garbage collection ABI
  • tuple
  • Digita i tratti
  • funzione e legatura
  • Espressioni regolari
  • Utilità temporali
  • Generazione di numeri casuali
  • Allocatori individuati

Contenitori e algoritmi

  • Miglioramenti degli algoritmi
  • Miglioramenti del contenitore
  • contenitori non ordinati_ *
  • std :: matrice
  • forward_list

Concorrenza

C ++ 14

Lo standard C ++ 14 viene spesso definito come un bugfix per C ++ 11. Contiene solo un elenco limitato di modifiche di cui la maggior parte sono estensioni alle nuove funzionalità in C ++ 11. Di seguito è possibile trovare una panoramica delle modifiche così come sono state raggruppate nelle FAQ di isocpp con collegamenti a documentazione più dettagliata.

Estensioni della lingua

Estensioni della libreria

Deprecato / Rimosso

C ++ 17

Lo standard C ++ 17 è completo ed è stato proposto per la standardizzazione. Nei compilatori con supporto sperimentale per queste funzionalità, viene solitamente indicato come C ++ 1z.

Estensioni della lingua

Estensioni della libreria

C ++ 03

Lo standard C ++ 03 riguarda principalmente i report sui difetti dello standard C ++ 98. Oltre a questi difetti, aggiunge solo una nuova funzionalità.

Estensioni della lingua

C ++ 98

C ++ 98 è la prima versione standardizzata di C ++. Poiché è stato sviluppato come un'estensione di C, vengono aggiunte molte delle funzionalità che separano il C ++ da C.

Estensioni della lingua (rispetto a C89 / C90)

  • Classi, Classi derivate, funzioni membro virtuali, funzioni membro const
  • Sovraccarico delle funzioni, sovraccarico dell'operatore
  • Commenti a riga singola (È stato introdotto in C-languague con lo standard C99)
  • Riferimenti
  • nuovo e cancella
  • tipo booleano (è stato introdotto nel C-languague con lo standard C99)
  • modelli
  • spazi dei nomi
  • eccezioni
  • cast specifici

Estensioni della libreria

  • La libreria di modelli standard

C ++ 20

C ++ 20 è il prossimo standard di C ++, attualmente in fase di sviluppo, basato sullo standard C ++ 17. Il suo progresso può essere monitorato sul sito Web ISO cpp ufficiale .

Le seguenti caratteristiche sono semplicemente ciò che è stato accettato per la prossima versione dello standard C ++, mirato per il 2020.

Estensioni della lingua

Nessuna estensione di lingua è stata accettata per ora.

Estensioni della libreria

Per il momento non sono state accettate estensioni di libreria.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow