Benannte Anforderungen
Von cppreference.com
< cpp
Die auf dieser Seite aufgeführten benannten Anforderungen sind die benannten Anforderungen, die im normativen Text des C++-Standards verwendet werden, um die Erwartungen der Standardbibliothek zu definieren.
Die Verantwortung, sicherzustellen, dass Bibliotheks-Templates mit Template-Argumenten instanziiert werden, die diese Anforderungen erfüllen, liegt beim Programmierer. Andernfalls kann dies zu sehr komplexen Compiler-Diagnosen führen.
Einige dieser Anforderungen werden in C++20 mithilfe des Sprachmerkmals Concepts formalisiert.
Basis | ||
| spezifiziert, dass ein Objekt des Typs standardmäßig konstruiert werden kann (benannte Anforderung) | ||
| (C++11) |
spezifiziert, dass ein Objekt des Typs aus einem rvalue konstruiert werden kann (benannte Anforderung) | |
| spezifiziert, dass ein Objekt des Typs aus einem lvalue konstruiert werden kann (benannte Anforderung) | ||
| (C++11) |
spezifiziert, dass ein Objekt des Typs von einem rvalue zugewiesen werden kann (benannte Anforderung) | |
| spezifiziert, dass ein Objekt des Typs von einem lvalue zugewiesen werden kann (benannte Anforderung) | ||
| spezifiziert, dass ein Objekt des Typs zerstört werden kann (benannte Anforderung) | ||
Typeneigenschaften | ||
| Hinweis: Der Standard definiert keine benannten Anforderungen mit Namen, die in dieser Unterkategorie angegeben sind. Dies sind Typkategorien, die von der Kernsprache definiert werden. Sie sind hier nur zur Konsistenz als benannte Anforderungen aufgeführt. | ||
| Objekttypen, die keine Array- oder Klassentypen sind (benannte Anforderung) | ||
| (veraltet in C++20) |
POD (Plain Old Data)-Typen, kompatibel mit C struct (benannte Anforderung) | |
| (C++11) |
Objekte dieser Typen können ihre Werte nach dem Kopieren ihrer zugrundeliegenden Bytes beibehalten (benannte Anforderung) | |
| (C++11)(deprecated in C++26) |
Objekte dieser Typen können trivial konstruiert und kopiert werden (benannte Anforderung) | |
| (C++11) |
diese Typen sind nützlich für die Kommunikation mit Code, der in anderen Programmiersprachen geschrieben wurde (benannte Anforderung) | |
| Objekte dieser Typen können implizit erstellt werden und ihre Lebensdauern können implizit beginnen (benannte Anforderung) | ||
Bibliothekweit | ||
| boolesche Operationen (operator&&, operator|| und operator!) haben die üblichen Semantik (benannte Anforderung) | ||
operator== ist eine Äquivalenzrelation(benannte Anforderung) | ||
operator< ist eine schwache strikte Ordnungrelation(benannte Anforderung) | ||
| kann mit einem nicht qualifizierten Funktionsaufruf ohne Member-Funktion swap() getauscht werden (benannte Anforderung) | ||
| (C++11) |
ein LegacyIterator, der auf einen Swappable-Typ dereferenziert (benannte Anforderung) | |
| (C++11) |
ein zeigerähnlicher Typ, der einen Nullwert unterstützt (benannte Anforderung) | |
| (C++11) |
ein FunctionObject, der bei Eingaben mit unterschiedlichen Werten eine geringe Wahrscheinlichkeit hat, die gleiche Ausgabe zu erzeugen (benannte Anforderung) | |
| ein Klassentyp, der Allokationsinformationen enthält (benannte Anforderung) | ||
| ein Objekt, das mit der Funktionsaufrufsyntax aufgerufen werden kann (benannte Anforderung) | ||
| ein Typ, für den die Invoke-Operation definiert ist (benannte Anforderung) | ||
| ein FunctionObject, der für ein Argument einen Wert zurückgibt, der in bool konvertierbar ist, ohne es zu modifizieren (benannte Anforderung) | ||
| ein FunctionObject, der für zwei Argumente einen Wert zurückgibt, der in bool konvertierbar ist, ohne sie zu modifizieren (benannte Anforderung) | ||
| ein BinaryPredicate, der eine Ordnungsrelation herstellt (benannte Anforderung) | ||
Container | |
| Datenstruktur, die den Elementzugriff über Iteratoren ermöglicht (benannte Anforderung) | |
| Container, der bidirektionale Iteratoren verwendet (benannte Anforderung) | |
| (C++11) |
Container, der einen Allocator verwendet (benannte Anforderung) |
| Container mit linear gespeicherten Elementen (benannte Anforderung) | |
| (C++17) |
Container mit Elementen, die an benachbarten Speicheradressen gespeichert sind (benannte Anforderung) |
| Container, der Elemente speichert, indem er sie Schlüsseln zuordnet (benannte Anforderung) | |
| Container, der Elemente speichert, indem er sie in Buckets speichert und sie Schlüsseln zuordnet (benannte Anforderung) | |
Container-Element | |
| (C++11) |
Element kann im uninitialisierten Speicher standardmäßig konstruiert werden (benannte Anforderung) |
| (C++11) |
Element kann im uninitialisierten Speicher kopierkonstruiert werden (benannte Anforderung) |
| (C++11) |
Element kann im uninitialisierten Speicher verschiebungskonstruiert werden (benannte Anforderung) |
| (C++11) |
Element kann im uninitialisierten Speicher konstruiert werden (benannte Anforderung) |
| (C++11) |
Element kann mit einem Allocator zerstört werden (benannte Anforderung) |
Iterator | |
| allgemeines Konzept zum Zugriff auf Daten innerhalb einer Datenstruktur (benannte Anforderung) | |
| Iterator, der zum Lesen von Daten verwendet werden kann (benannte Anforderung) | |
| Iterator, der zum Schreiben von Daten verwendet werden kann (benannte Anforderung) | |
| Iterator, der zum mehrmaligen Lesen von Daten verwendet werden kann (benannte Anforderung) | |
| Iterator, der sowohl inkrementiert als auch dekrementiert werden kann (benannte Anforderung) | |
| Iterator, der in konstanter Zeit vorwärts bewegt werden kann (benannte Anforderung) | |
| (C++17) |
Iterator für kontinuierlich allozierte Elemente (benannte Anforderung) |
| (C++20) |
Iterator, der während der Auswertung von konstanten Ausdrücken verwendet werden kann (benannte Anforderung) |
Stream-I/O-Funktionen | |
| eine Stream-Eingabefunktion, die führende Leerzeichen nicht überspringt und die verarbeiteten Zeichen zählt (benannte Anforderung) | |
| eine Stream-Eingabefunktion, die führende Leerzeichen überspringt (benannte Anforderung) | |
| eine grundlegende Stream-Ausgabefunktion (benannte Anforderung) | |
| eine Stream-Ausgabefunktion, die bei Fehlern failbit setzt und eine Referenz auf den Stream zurückgibt (benannte Anforderung) | |
Formatters | |
| (C++20) |
abstrahiert Formatierungsoperationen für einen gegebenen Formatierungsargumenttyp und Zeichentyp (benannte Anforderung) |
| (C++20) |
definiert Funktionen, die von der Formatierungsbibliothek verwendet werden (benannte Anforderung) |
Zufallszahlengenerierung | |
| (C++11) |
konsumiert eine Folge von ganzen Zahlen und erzeugt eine Folge von 32-Bit-unsigned-Werten (benannte Anforderung) |
| (C++11) |
gibt gleichverteilte Zufalls-unsigned-Integer zurück (benannte Anforderung) |
| (C++11) |
ein deterministischer UniformRandomBitGenerator, der durch den Seed definiert ist (benannte Anforderung) |
| (C++11) |
ein RandomNumberEngine, der die Ausgabe eines anderen RandomNumberEngine transformiert (benannte Anforderung) |
| (C++11) |
gibt Zufallszahlen zurück, die einer gegebenen mathematischen Wahrscheinlichkeitsdichtefunktion folgen (benannte Anforderung) |
Concurrency | |
| (C++11) |
stellt exklusive Besitzsemantik für Ausführungsagenten (d.h. Threads) bereit (benannte Anforderung) |
| (C++11) |
ein BasicLockable, der versuchte Sperrenakquisition unterstützt (benannte Anforderung) |
| (C++11) |
ein Lockable, der zeitgesteuerte Sperrenakquisition unterstützt (benannte Anforderung) |
| (C++14) |
stellt geteilte Besitzsemantik für Ausführungsagenten (d.h. Threads) bereit (benannte Anforderung) |
| (C++14) |
ein SharedLockable, der zeitgesteuerte Sperrenakquisition unterstützt (benannte Anforderung) |
| (C++11) |
ein Lockable, der vor Datenrennen und sequenziell konsistenter Synchronisation schützt (benannte Anforderung) |
| (C++11) |
ein TimedLockable, der vor Datenrennen und sequenziell konsistenter Synchronisation schützt (benannte Anforderung) |
| (C++17) |
ein Mutex, der geteilte Besitzsemantik unterstützt (benannte Anforderung) |
| (C++14) |
ein TimedMutex, der geteilte Besitzsemantik unterstützt (benannte Anforderung) |
Bereiche (Ranges) | |
| (C++20) |
ein FunctionObject, der einen Range-Adapter aus einem viewable_range und zusätzlichen Argumenten erstellt(benannte Anforderung) |
| (C++20) |
ein FunctionObject, der den Pipe-Operator unterstützt (benannte Anforderung) |
Anpassung mehrdimensionaler Ansichten | |
| (C++23) |
steuert die Abbildung eines mehrdimensionalen Indexes in mdspan (benannte Anforderung) |
| (C++23) |
eine Richtlinie, die LayoutMapping-Anforderungen enthält (benannte Anforderung) |
| (C++23) |
eine Richtlinie, die den Zugriff auf den Datenhandle in mdspan steuert (benannte Anforderung) |
Sonstiges | |
| (C++11) |
beschreibt eine Eigenschaft eines Typs (benannte Anforderung) |
| (C++11) |
beschreibt eine Beziehung zwischen zwei Typen (benannte Anforderung) |
| (C++11) |
modifiziert eine Eigenschaft eines Typs (benannte Anforderung) |
| (C++11) |
aggregiert eine Dauer, einen Zeitpunkt und eine Funktion zum Abrufen des aktuellen Zeitpunkts (benannte Anforderung) |
| (C++11) |
eine Clock, die keine Ausnahmen auslöst (benannte Anforderung) |
| definiert Typen und Funktionen für einen Zeichentyp (benannte Anforderung) | |
| Bitset, Ganzzahl oder Aufzählung (benannte Anforderung) | |
| ein Typ, für den die Initialisierung effektiv der Zuweisung gleichkommt (benannte Anforderung) | |
| (C++11) |
definiert Typen und Funktionen, die von der regulären Ausdrücke Bibliothek verwendet werden (benannte Anforderung) |
| (C++11) |
ein Typ mit constexpr-Konstruktor (benannte Anforderung) |
| Dieser Abschnitt ist unvollständig Grund: Gibt es weitere fehlende Anforderungen? |