Namespaces
Variants

History of C++

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous
History of C++

Inhaltsverzeichnis

Frühes C++

  • 1979: C with Classes erstmals implementiert
  1. 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++)
  2. 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
  1. Neue Funktionen: virtual functions , Funktionen- und operator overloading , references , new und delete Operatoren, das Schlüsselwort const , Bereichsauflösungsoperator
  2. 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
  1. 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
  2. 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.

  1. 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)
  1. Neue Funktionen: RTTI ( dynamic_cast , typeid ), kovariante Rückgabetypen , Cast-Operatoren , mutable , bool , Deklarationen in Bedingungen, Template-Instanziierungen , Member-Templates , export
  2. Bibliothekserweiterungen: Locales , bitset , valarray , auto_ptr , templatisierte String-Klasse , I/O-Streams , und komplexe Zahlen .
  3. 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.

Behobene Fehlermeldungen in C++03 (92 Kern, 125 Bibliothek)

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.

Dieser TR ist eine C++-Bibliothekserweiterung, die Folgendes zur C++-Standardbibliothek hinzufügt:

  1. 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 .
  2. Von C99: Mathematische Funktionen aus <math.h> die neu in C99 waren, Leerzeichen-Klasse , Gleitkomma-Umgebung , hexfloat I/O-Manipulator, Festbreiten-Ganzzahltypen , der long long Typ, 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.

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

Hauptartikel: C++11

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

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 .

C++14-Zeitraum

Hauptartikel: C++14

Kleinere Überarbeitung des C++-Standards

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.

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.

Diese TS erweitert die C++-Kernsprache um synchronisierte und atomare Blöcke sowie transaktionssichere Funktionen, die transaktionale Speichersemantik implementieren.

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.

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.

Diese TS erweitert die C++-Bibliothek um mehrere Erweiterungen für std::future , Latches und Barriers sowie atomare Smart Pointer.

C++17-Zeitraum

Hauptartikel: C++17

Die bedeutende Überarbeitung des C++-Standards nach C++11

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.

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.

Diese TS erweitert die C++-Bibliothek um TCP/IP-Netzwerkfunktionen basierend auf boost.asio .

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.

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

Hauptartikel: C++20

Die bedeutende Überarbeitung des C++-Standards nach C++17

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

Hauptartikel: C++23

Die nächste Hauptrevision des C++-Standards

Siehe auch

C-Dokumentation für Geschichte von C

Externe Links

1. Eine Geschichte von C++: 1979-1991
2. Entwicklung einer Sprache in und für die reale Welt: C++ 1991-2006
3. Erfolg in einer vollen und sich wandelnden Welt: C++ 2006-2020
4. Standard C++ Foundation
5. C++ auf Wikipedia
6. C++ Standards Committee