Sök…


Introduktion

1998 var det en första publikation av standarden som gjorde C ++ till ett internt standardiserat språk. Från den tiden har C ++ utvecklats vilket resulterat i olika dialekter av C ++. På den här sidan kan du hitta en översikt över alla olika standarder och deras förändringar jämfört med föregående version. Detaljerna för hur du använder dessa funktioner beskrivs på mer specialiserade sidor.

Anmärkningar

När C ++ nämns, hänvisas ofta till "standarden". Men vad är exakt den standarden?

C ++ har en lång historia. Började som ett litet projekt av Bjarne Stroustrup inom Bell Labs, i början av 90-talet hade det blivit ganska populärt. Flera företag skapade C ++ - kompilatorer så att användare kunde köra sina C ++ - kompilatorer på ett stort antal datorer. Men för att underlätta detta bör alla dessa konkurrerande kompilatorer ha en enda definition av språket.

Vid den tiden hade C-språket framgångsrikt standardiserats. Detta innebär att en formell beskrivning av språket skrevs. Detta överlämnades till American National Standards Institute (ANSI), som öppnade dokumentet för granskning och publicerade det därefter 1989. Ett år senare valde International Organization for Standards (Eftersom det skulle ha olika akronymer på olika språk valde de en form , ISO, härrörande från grekiska isos, vilket betyder lika.) Antog den amerikanska standarden som en internationell standard.

För C ++ var det från början tydligt att det fanns ett internationellt intresse. En arbetsgrupp inom ISO startades (känd som WG21, inom underkommittén 22). Denna arbetsgrupp utarbetade en första standard omkring 1995. Men som vi programmerare vet är det inget farligare för en planerad leverans än sista minuten-funktioner, och det hände också med C ++. 1995 dök upp ett coolt nytt bibliotek med namnet STL, och de som arbetade i WG21 beslutade att lägga till en slimmad version till C ++ -utkastet. Naturligtvis orsakade detta tidsfristerna och bara tre år senare blev dokumentet slutgiltigt. ISO är en mycket formell organisation, så C ++ -standarden döptes med det inte särskilt säljbara namnet ISO / IEC 14882. Eftersom standarder kan uppdateras, blev denna exakta version känd som 14882: 1998.

Och det fanns verkligen ett krav på att uppdatera standarden. Standarden är ett mycket tjockt dokument som syftar till att exakt beskriva hur C ++ -kompilatorer ska fungera. Till och med en liten tvetydighet kan vara värt att fixa, så 2003 släpptes en uppdatering som 14882: 2003. Men detta har inte lagt till någon funktion i C ++; de nya funktionerna planerades för den andra uppdateringen.

Informellt sett var den andra uppdateringen känd som C ++ 0x, eftersom det inte var känt om detta skulle ta förrän 2008 eller 2009. Tja - den versionen fick också en liten försening, varför den blev 14882: 2011.

Lyckligtvis beslutade WG21 att inte låta det hända igen. C ++ 11 var väl mottagen och uthyrda till ett förnyat intresse för C ++. Så för att hålla fart, gick den tredje uppdateringen från planering till publicering på tre år, till 14882: 2014.

Arbetet slutade inte heller där. C ++ 17-standarden har föreslagits och arbetet för C ++ 20 har påbörjats.

Nuvarande arbetsutkast

Alla publicerade ISO-standarder är tillgängliga för försäljning från ISO-butiken ( http://www.iso.org ). Arbetsutkasten till C ++ - standarderna är dock offentligt tillgängliga gratis.

De olika versionerna av standarden:

C ++ 11

C ++ 11-standarden är en viktig förlängning av C ++ -standarden. Nedan hittar du en översikt över förändringarna eftersom de har grupperats på isocpp FAQ med länkar till mer detaljerad dokumentation.

Språkförlängningar

Allmänna funktioner

Klasser

  • = standard och = radera
  • Kontroll av standardflyttning och kopiering
  • Delegera konstruktörer
  • Initierare i klassens medlemmar
  • Arvade konstruktörer
  • Överstyr kontroller: åsidosätta
  • Åsidosätt kontroller: slutlig
  • Explicit konverteringsoperatörer

Andra typer

  • enum klass
  • lång lång - ett längre heltal
  • Utökade heltalstyper
  • Generaliserade fackföreningar
  • Generaliserade POD: er

mallar

  • Externa mallar
  • Mallalias
  • Variadiska mallar
  • Lokala typer som mallargument

samtidighet

  • Modell för samtidighetsminne
  • Dynamisk initialisering och förstörelse med samtidighet
  • Tråd-lokal lagring

Diverse språkfunktioner

  • Vad är värdet på __cplusplus för C ++ 11?
  • Syntax av eftertyp av returtyp
  • Förhindrar förträngning
  • Rätt vinklar
  • static_assert kompileringstidsanspråk
  • Rå strängbokstäver
  • attribut
  • Inriktning
  • C99 funktioner

Bibliotekstillägg

Allmän

  • unique_ptr
  • shared_ptr
  • weak_ptr
  • Avfallssamling ABI
  • tupel
  • Skriv drag
  • fungera och binda
  • Vanliga uttryck
  • Tidsverktyg
  • Slumpmässig nummergenerering
  • Scoped tilldelare

Behållare och algoritmer

  • Algoritmer förbättringar
  • Behållare förbättringar
  • unordered_ * containrar
  • std :: array
  • forward_list

samtidighet

C ++ 14

C ++ 14-standarden benämns ofta en bugfix för C ++ 11. Den innehåller bara en begränsad lista över förändringar, varav de flesta är tillägg till de nya funktionerna i C ++ 11. Nedan hittar du en översikt över förändringarna eftersom de har grupperats på isocpp FAQ med länkar till mer detaljerad dokumentation.

Språkförlängningar

Bibliotekstillägg

Avskrivs / tas bort

C ++ 17

C ++ 17-standarden är fullständig och har föreslagits för standardisering. I kompilatorer med experimentellt stöd för dessa funktioner benämns det vanligtvis C ++ 1z.

Språkförlängningar

Bibliotekstillägg

C ++ 03

C ++ 03-standarden adresserar huvudsakligen felrapporter av C ++ 98-standarden. Bortsett från dessa defekter lägger den bara till en ny funktion.

Språkförlängningar

C ++ 98

C ++ 98 är den första standardiserade versionen av C ++. Eftersom det utvecklades som en förlängning till C läggs många av de funktioner som skiljer C ++ från C till.

Språkförlängningar (avseende C89 / C90)

  • Klasser, Deriverade klasser, virtuella medlemsfunktioner, const medlemsfunktioner
  • Funktionsöverbelastning, överbelastning av operatören
  • Kommentarer med en rad (har införts i C-språket med C99-standard)
  • referenser
  • nytt och ta bort
  • boolesk typ (har introducerats i C-languague med C99-standard)
  • mallar
  • namnutrymmen
  • undantag
  • specifika kast

Bibliotekstillägg

  • Standardmallbiblioteket

C ++ 20

C ++ 20 är den kommande standarden för C ++, för närvarande under utveckling, baserad på C ++ 17-standarden. Dess framsteg kan spåras på den officiella ISO cpp-webbplatsen .

Följande funktioner är helt enkelt vad som har accepterats för nästa utgåva av C ++ -standarden, riktad för 2020.

Språkförlängningar

Inga språkförlängningar har accepterats för tillfället.

Bibliotekstillägg

Inga bibliotekstillägg har accepterats för tillfället.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow