History of C++
Inhaltsverzeichnis |
Frühes C++
- 1979: C with Classes erstmals implementiert
- Neue Funktionen: classes , member functions , derived classes , separate Kompilierung, public and private access control , friends , Typüberprüfung von Funktionsargumenten, default arguments , inline functions , overloaded assignment operator , constructors , destructors , f ( ) gleichbedeutend mit f ( void ) , Aufruffunktion und Rückgabefunktion (Synchronisierungsfunktionen, nicht in C++)
- Bibliotheken: die nebenläufige Task-Bibliothek (nicht in C++)
- 1982: C with Classes Referenzhandbuch veröffentlicht
- 1984: C84 implementiert, Referenzhandbuch veröffentlicht
- 1985: Cfront 1.0
-
Neue Funktionen:
virtual functions
, Funktionen- und
operator overloading
,
references
,
new
und
delete
Operatoren,
das Schlüsselwort
const, Bereichsauflösungsoperator -
Bibliothekserweiterungen:
complex number
,
string(AT&T Version), I/O stream
- 1985: Die C++ Programmiersprache, 1. Auflage
- 1986: Das "whatis?"-Papier dokumentiert die verbleibenden Entwurfsziele, einschließlich Mehrfachvererbung, Ausnahmebehandlung und Templates.
- 1987: C++-Unterstützung in GCC 1.15.3
- 1989: Cfront 2.0
- Neue Funktionen: multiple inheritance , pointers to members , protected access , type-safe linkage, abstract classes , static und const-qualified member functions, class-specific new und delete
- Bibliothekserweiterungen: I/O manipulators
- 1990: The Annotated C++ Reference Manual
Dieses Buch beschrieb die Sprache, wie sie entworfen wurde, einschließlich einiger Funktionen, die noch nicht implementiert waren. Es diente als de-facto-Standard bis zur ISO.
- Neue Funktionen: namespaces , exception handling , nested classes , templates
- 1991: Cfront 3.0
- 1991: The C++ Programming Language, 2. Auflage
Standard C++
- 1990: ANSI C++ Committee gegründet
- 1991: ISO C++ Committee gegründet
- 1992: STL in C++ implementiert
C++98/03 Zeitraum
- 1998: C++98 (ISO/IEC 14882:1998)
-
Neue Funktionen: RTTI (
dynamic_cast,typeid), kovariante Rückgabetypen , Cast-Operatoren ,mutable,bool, Deklarationen in Bedingungen, Template-Instanziierungen , Member-Templates , export - Bibliothekserweiterungen: Locales , bitset , valarray , auto_ptr , templatisierte String-Klasse , I/O-Streams , und komplexe Zahlen .
- Basierend auf STL: Container , Algorithmen , Iteratoren , Funktionsobjekte
- 1998: The C++ Programming Language, 3rd edition
- 1999: Boost gegründet von den Komiteemitgliedern, um neue hochwertige Kandidatenbibliotheken für den Standard zu produzieren.
- 2003: C++03 (ISO/IEC 14882:2003)
Dies war eine kleinere Überarbeitung, die kaum mehr als ein technisches Korrigendum darstellen sollte. Diese Überarbeitung führt die Definition der value initialization ein.
- 2006: Performance TR (ISO/IEC TR 18015:2006) ( ISO Store ) ( 2006-Entwurf )
Dieses TR behandelt die Kosten verschiedener C++-Abstraktionen, bietet Implementierungsrichtlinien, diskutiert den Einsatz von C++ in eingebetteten Systemen und führt die
<hardware>
-Schnittstelle zu C's ISO/IEC TR 18037:2008
<iohw.h>
ein.
- 2007: Bibliothekserweiterung TR1 (ISO/IEC TR 19768:2007) ( ISO Store ) ( 2005-Entwurf ).
Dieser TR ist eine C++-Bibliothekserweiterung, die Folgendes zur C++-Standardbibliothek hinzufügt:
- Von Boost: reference_wrapper , Intelligente Zeiger , Elementfunktion , result_of , bind , function , Typmerkmale , Zufallszahlen , Mathematische Spezialfunktionen, tuple , array , Ungeordnete Container (einschließlich hash ), und Reguläre Ausdrücke .
-
Von C99: Mathematische Funktionen aus
<math.h>die neu in C99 waren, Leerzeichen-Klasse , Gleitkomma-Umgebung , hexfloat I/O-Manipulator, Festbreiten-Ganzzahltypen , derlong longTyp, va_copy , die snprintf() und vfscanf() Funktionsfamilien, und die C99-Konvertierungsspezifizierer für printf() und scanf() Funktionsfamilien.
Der gesamte TR1 mit Ausnahme der speziellen Funktionen wurde in C++11 aufgenommen, mit geringfügigen Änderungen.
- 2010: Mathematische Spezialfunktionen (ISO/IEC 29124:2010) ( ISO Store ) ( 2010 draft )
Dieser internationale Standard ist eine C++-Standardbibliothekserweiterung, die spezielle Funktionen hinzufügt, die Teil von TR1 waren, aber nicht in C++11 aufgenommen wurden: elliptische Integrale, Exponentialintegral, Laguerre-Polynome, Legendre-Polynome, Hermite-Polynome, Bessel-Funktionen, Neumann-Funktionen, Beta-Funktion und Riemannsche Zeta-Funktion. Dieser Standard wurde in C++17 integriert .
C++11-Ära
- 2011: C++11 (ISO/IEC 14882:2011) ( ISO Store ) ( 2012 post-publication draft ).
Eine große Anzahl von Änderungen wurde eingeführt, um bestehende Praktiken zu standardisieren und die für C++-Programmierer verfügbaren Abstraktionen zu verbessern
- 2011: Dezimal-Gleitkomma TR (ISO/IEC TR 24733:2011) ( ISO Store ) ( 2009 draft )
Dieses TR implementiert die dezimalen Gleitkommatypen aus dem IEEE 754-2008 Standard für Gleitkommaarithmetik:
std::decimal::decimal32
,
std::decimal::decimal64
, und
std::decimal::decimal128
.
- 2012: The Standard C++ Foundation gegründet
- 2013: The C++ Programming Language, 4. Auflage
C++14-Zeitraum
- 2014: C++14 ( ISO Store ) ( ANSI Store ) ( Finalentwurf 2014 )
Kleinere Überarbeitung des C++-Standards
- 2015: Filesystem-Bibliothek TS (ISO/IEC TS 18822:2015) ( ISO Store ) ( 2014 draft )
Dieser TS ist eine experimentelle C++-Bibliothekserweiterung, die eine Dateisystembibliothek basierend auf boost.filesystem V3 (mit einigen Modifikationen und Erweiterungen) spezifiziert. Dieser TS wurde in C++17 übernommen.
- 2015: Erweiterungen für Parallelism TS (ISO/IEC TS 19570:2015) ( ISO Store ) ( 2015 draft )
Dieser TS standardisiert parallele und vektor-parallele APIs für alle Standardbibliothek-Algorithmen und fügt außerdem neue Algorithmen hinzu wie
reduce
,
transform_reduce
, oder
exclusive_scan
. Dieser TS wurde in C++17 integriert.
- 2015: Erweiterungen für Transactional Memory TS (ISO/IEC TS 19841:2015) ( ISO Store ) ([ 2015 draft )
Diese TS erweitert die C++-Kernsprache um synchronisierte und atomare Blöcke sowie transaktionssichere Funktionen, die transaktionale Speichersemantik implementieren.
- 2015: Erweiterungen für den Library Fundamentals TS (ISO/IEC TS 19568:2015) ( ISO Store ) ( 2015-Entwurf )
Diese TS fügt mehrere neue Komponenten zur C++-Standardbibliothek hinzu: optional , any , string_view , sample , search , apply , polymorphe Allokatoren und Variablen-Templates für Type-Traits. Diese TS wurde in C++17 übernommen.
- 2015: Erweiterungen für Concepts TS (ISO/IEC TS 19217:2015) ( ISO Store ) ( 2015 draft )
Diese TS erweitert die C++-Kernsprache um Konzepte (benannte Typanforderungen) und Constraints (Einschränkungen der in Template-, Funktions- und Variablendeklarationen zulässigen Typen), was die Metaprogrammierung unterstützt und die Template-Instanziierungsdiagnose vereinfacht, siehe Konzepte . Diese TS wurde mit einigen Auslassungen in C++20 übernommen.
- 2016: Erweiterungen für Concurrency TS (ISO/IEC TS 19571:2016) ( ISO Store ) ( 2015 draft )
Diese TS erweitert die C++-Bibliothek um mehrere Erweiterungen für std::future , Latches und Barriers sowie atomare Smart Pointer.
C++17-Zeitraum
- 2017: C++17 ( ISO Store ) ( ANSI Store ) ( n4659 2017-03-21 final draft )
Die bedeutende Überarbeitung des C++-Standards nach C++11
- 2017: Erweiterungen für Ranges TS (ISO/IEC TS 21425:2017) ( ISO Store ) ( 2017 draft )
Diese TS erweitert die C++-Standardbibliothek um Ranges , eine neue, leistungsfähigere Abstraktion zur Ersetzung von Iterator-Paaren, zusammen mit Range-Views, Sentinel-Ranges, Projektionen für Transformationen on-the-fly, neuen Iterator-Adaptoren und Algorithmen. Diese Erweiterung ermöglicht es endlich, einen Vektor mit sort ( v ) ; zu sortieren.
- 2017: Erweiterungen für Coroutines TS (ISO/IEC TS 22277:2017) ( ISO Store ) ( 2017 draft )
Diese TS erweitert die C++-Kernsprache und die Standardbibliothek um stacklose Coroutinen (wiederaufnehmbare Funktionen). Dies fügt die Schlüsselwörter co_await , co_yield und co_return hinzu.
- 2018: Erweiterungen für Networking TS (ISO/IEC TS 19216:2018) ( ISO Store ) ( 2017 draft )
Diese TS erweitert die C++-Bibliothek um TCP/IP-Netzwerkfunktionen basierend auf boost.asio .
- 2018: Erweiterungen für Modules TS (ISO/IEC TS 21544:2018) ( ISO Store ) ( 2018 draft )
Diese TS erweitert die C++-Kernsprache um Module. Dies fügt die speziellen Bezeichner module , import hinzu und führt das Schlüsselwort export mit einer neuen Bedeutung wieder ein.
- 2018: Erweiterungen für Parallelismus Version 2 TS (ISO/IEC TS 19570:2018) ( ISO Store ) ( 2018 draft )
Diese TS erweitert die C++-Bibliothek um zwei neue Ausführungsrichtlinien ( unseq und vec ), zusätzliche parallele Algorithmen wie reduction_plus oder for_loop_strided , Task-Blöcke für das Forken und Joinen paralleler Tasks, SIMD-Typen und Operationen auf diesen Typen.
C++20-Zeitraum
- 2020: C++20 ( ISO Store ) (Finalentwurf n4860 2020-03-31 )
Die bedeutende Überarbeitung des C++-Standards nach C++17
- 2021: Reflection TS (ISO/IEC TS 23619:2021) ( ISO-Store ) ( 2020-Entwurf )
Diese TS erweitert C++ um die Möglichkeiten, Programmentitäten wie Variablen, Aufzählungen, Klassen und ihre Mitglieder, Lambdas und ihre Captures usw. zu inspizieren.
Zukünftige Entwicklung
- Experimentelle Technische Spezifikationen
- 2026: C++ neueste Entwurfsversion n5008 (2025-03-15)
Die nächste Hauptrevision des C++-Standards
Siehe auch
|
C-Dokumentation
für
Geschichte von C
|