Dienstprogramm-Bibliothek
C++ enthält eine Vielzahl von Dienstprogramm-Bibliotheken, die Funktionalitäten von Bit-Zählung bis zur partiellen Funktionsanwendung bieten. Diese Bibliotheken lassen sich grob in zwei Gruppen einteilen
- Sprachunterstützungsbibliotheken, und
- Allzweckbibliotheken.
[edit] Sprachunterstützung
Sprachunterstützungsbibliotheken stellen Klassen und Funktionen bereit, die eng mit Sprachfeatures interagieren und gängige Sprachidiome unterstützen.
[edit] Eigenschaften der Implementierung (seit C++20)
Die Header-Datei <version> liefert implementierungsabhängige Informationen über die C++-Standardbibliothek (z. B. Versionsnummer und Erscheinungsdatum). Sie definiert auch die Bibliotheks-Feature-Test-Makros.
[edit] Typunterstützung
Basistypen (z. B. std::size_t, std::nullptr_t), RTTI (z. B. std::type_info)
[edit] Programm-Dienstprogramme
Beendigung (z. B. std::abort, std::atexit), Umgebung (z. B. std::system), Signale (z. B. std::raise).
[edit] Dynamische Speicherverwaltung
Intelligente Zeiger (z. B. std::shared_ptr), Allokatoren (z. B. std::allocator oder std::pmr::memory_resource), C-style Speicherverwaltung (z. B. std::malloc).
[edit] Fehlerbehandlung
Ausnahmen (z. B. std::exception, std::terminate), Assertionen (z. B. assert).
[edit] Variadische Funktionen
Unterstützung für Funktionen, die eine beliebige Anzahl von Parametern annehmen (über z. B. va_start, va_arg, va_end).
[edit] Initialisierungslisten (seit C++11)
| Definiert in der Header-Datei
<initializer_list> | |
| (C++11) |
verweist auf ein temporäres Array, das in der Listeninitialisierung erstellt wurde (Klassenvorlage) |
[edit] Erfassung von Quellcode-Informationen (seit C++20)
| Definiert in der Header-Datei
<source_location> | |
| (C++20) |
eine Klasse, die Informationen über den Quellcode darstellt, wie z. B. Dateinamen, Zeilennummern und Funktionsnamen (Klasse) |
[edit] Drei-Wege-Vergleich (seit C++20)
| Definiert in der Header-Datei
<compare> | |
| gibt an, dass der Operator <=> konsistente Ergebnisse für die gegebenen Typen liefert (Konzept) | |
| (C++20) |
der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt, nicht substituierbar ist und unvergleichbare Werte zulässt (Klasse) |
| (C++20) |
der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt und nicht substituierbar ist (Klasse) |
| (C++20) |
der Ergebnistyp des 3-Wege-Vergleichs, der alle 6 Operatoren unterstützt und substituierbar ist (Klasse) |
| benannte Vergleichsfunktionen (Funktion) | |
| (C++20) |
beschränkte Funktionsobjekte, die x <=> y implementieren (Klasse) |
| (C++20) |
erhält den Ergebnistyp des Drei-Wege-Vergleichsoperators <=> für gegebene Typen (Klassenvorlage) |
| (C++20) |
die stärkste Vergleichskategorie, in die alle gegebenen Typen konvertiert werden können (Klassenvorlage) |
| (C++20) |
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::strong_ordering(Customization Point Objekt) |
| (C++20) |
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::weak_ordering(Customization Point Objekt) |
| (C++20) |
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::partial_ordering(Customization Point Objekt) |
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::strong_ordering, auch wenn operator<=> nicht verfügbar ist(Customization Point Objekt) | |
| (C++20) |
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::weak_ordering, auch wenn operator<=> nicht verfügbar ist(Customization Point Objekt) |
führt einen 3-Wege-Vergleich durch und erzeugt ein Ergebnis vom Typ std::partial_ordering, auch wenn operator<=> nicht verfügbar ist(Customization Point Objekt) | |
[edit] Coroutine-Unterstützung (seit C++20)
Typen für die Unterstützung von Coroutinen (z. B. std::coroutine_traits, std::coroutine_handle).
[edit] Vertragsunterstützung (seit C++26)
Typen für die Unterstützung von Verträgen (z. B. std::contracts::contract_violation).
[edit] Allzweck-Dienstprogramme
[edit] Swap
| Definiert in der Header-Datei
<utility> | |
| tauscht die Werte von zwei Objekten (Funktionsvorlage) | |
| (C++14) |
ersetzt das Argument durch einen neuen Wert und gibt seinen vorherigen Wert zurück (Funktionsvorlage) |
| Definiert in der Header-Datei
<concepts> | |
| (C++20) |
tauscht die Werte von zwei Objekten (Customization Point Objekt) |
[edit] Typ-Operationen (seit C++11)
| Definiert in der Header-Datei
<utility> | |
| (C++11) |
leitet ein Funktionsargument weiter und verwendet das Typ-Template-Argument, um seine Wertkategorie zu erhalten (Funktionsvorlage) |
| (C++23) |
leitet ein Funktionsargument weiter, als ob es in die Wertkategorie und Konstanz des Ausdrucks des angegebenen Typ-Template-Arguments umgewandelt würde (Funktionsvorlage) |
| (C++11) |
konvertiert das Argument in ein xvalue (Funktionsvorlage) |
| (C++11) |
konvertiert das Argument in ein xvalue, wenn der Move-Konstruktor nicht wirft (Funktionsvorlage) |
| (C++17) |
erhält eine Referenz auf const zu seinem Argument (Funktionsvorlage) |
| (C++11) |
erhält eine Referenz auf ein Objekt des Typ-Template-Arguments zur Verwendung in einem nicht-ausgewerteten Kontext (Funktionsvorlage) |
| (C++23) |
konvertiert eine Aufzählung in ihren zugrundeliegenden Typ (Funktionsvorlage) |
[edit] Ganzzahl-Vergleichsfunktionen (seit C++20)
| Definiert in der Header-Datei
<utility> | |
| vergleicht zwei Ganzzahlwerte und stellt sicher, dass vorzeichenbehaftete negative Zahlen kleiner als vorzeichenlose Zahlen sind (Funktionsvorlage) | |
| (C++20) |
prüft, ob ein Ganzzahlwert im Bereich eines gegebenen Ganzzahltyps liegt (Funktionsvorlage) |
[edit] Relationale Operatoren (bis C++20)
| Definiert in der Header-Datei
<utility> | |
| Definiert im Namensraum
std::rel_ops | |
| (veraltet in C++20) |
generiert automatisch Vergleichsoperatoren basierend auf benutzerdefinierten operator== und operator< (Funktionsvorlage) |
[edit] Konstruktionstags (seit C++11)
| Definiert in der Header-Datei
<utility> | |
| Tag für stückweise Konstruktion (Tag) | |
| Tag für In-Place-Konstruktion (Tag) | |
| (C++26) |
Tag für Wertkonstruktion (Tag) |
[edit] Paare und Tupel
| Definiert in der Header-Datei
<utility> | |
| implementiert ein binäres Tupel, d. h. ein Paar von Werten (Klassenvorlage) | |
| Definiert in der Header-Datei
<tuple> | |
| (C++11) |
implementiert einen Container fester Größe, der Elemente von möglicherweise unterschiedlichen Typen enthält (Klassenvorlage) |
| (C++17) |
ruft eine Funktion mit einem Tupel von Argumenten auf (Funktionsvorlage) |
| (C++17) |
konstruiert ein Objekt mit einem Tupel von Argumenten (Funktionsvorlage) |
Tupel-Protokoll (seit C++11) | |
| Definiert in der Header-Datei
<tuple> | |
| Definiert in der Header-Datei
<utility> | |
| Definiert in der Header-Datei
<array> | |
| Definiert in der Header-Datei
<ranges> | |
| Definiert in der Header-Datei
<complex> | |
| (C++11) |
erhält die Anzahl der Elemente eines Tupel-ähnlichen Typs (Klassenvorlage) |
| (C++11) |
erhält die Elementtypen eines Tupel-ähnlichen Typs (Klassenvorlage) |
[edit] Summen-Typen und Typ-erased Wrapper (seit C++17)
| Definiert in der Header-Datei
<optional> | |
| (C++17) |
ein Wrapper, der möglicherweise ein Objekt enthält oder auch nicht (Klassenvorlage) |
| Definiert in der Header-Datei
<expected> | |
| (C++23) |
ein Wrapper, der entweder einen erwarteten oder einen Fehlerwert enthält (Klassenvorlage) |
| Definiert in der Header-Datei
<variant> | |
| (C++17) |
eine typsichere diskriminierte Union (Klassentemplate) |
| Definiert in der Header-Datei
<any> | |
| (C++17) |
Objekte, die Instanzen eines beliebigen CopyConstructible-Typs enthalten (Klasse) |
[edit] Bitset
| Definiert in der Header-Datei
<bitset> | |
| implementiert eine Bit-Array fester Länge (Klassenvorlage) | |
[edit] Bit-Manipulation (seit C++20)
Die Header-Datei <bit> stellt mehrere Funktionsvorlagen zum Zugreifen, Manipulieren und Verarbeiten einzelner Bits und Bitsequenzen bereit. Die Byte-Reihenfolge (Endianness) von Skalartypen kann über die std::endian-Einrichtung inspiziert werden.
[edit] Funktionsobjekte (seit C++11)
Partielle Funktionsanwendung (z. B. std::bind) und verwandte Dienstprogramme: Dienstprogramme zum Binden wie std::ref und std::placeholders, polymorphe Funktions-Wrapper: std::function, vordefinierte Funktoren (z. B. std::plus, std::equal_to), Zeiger-auf-Mitglied-zu-Funktions-Konverter std::mem_fn.
[edit] Hash-Unterstützung (seit C++11)
| Definiert in der Header-Datei
<functional> | |
| (C++11) |
Hash-Funktionsobjekt (Klassenvorlage) |
[edit] Siehe auch
| C-Dokumentation für Dienstprogramm-Bibliothek
|