Named Requirements
From cppreference.net
<
cpp
Die named requirements auf dieser Seite sind die named requirements, die im normativen Text des C++-Standards verwendet werden, um die Erwartungen der Standardbibliothek zu definieren.
Die Verantwortung, sicherzustellen, dass Bibliotheksvorlagen mit Template-Argumenten instanziiert werden, die diese Anforderungen erfüllen, liegt beim Programmierer. Unterlassen kann zu sehr komplexen Compiler-Diagnosen führen.
Einige dieser Anforderungen sind in C++20 durch das concepts Sprachfeature formalisiert.
Grundlagen |
||
|
gibt an, dass ein Objekt des Typs standardmäßig konstruiert werden kann
(Named Requirement) |
||
|
(C++11)
|
spezifiziert, dass ein Objekt des Typs aus einem Rvalue konstruiert werden kann
(Named Requirement) |
|
|
gibt an, dass ein Objekt des Typs aus einem Lvalue konstruiert werden kann
(Named Requirement) |
||
|
(C++11)
|
spezifiziert, dass ein Objekt des Typs von einem Rvalue zugewiesen werden kann
(Named Requirement) |
|
|
legt fest, dass ein Objekt des Typs von einem Lvalue zugewiesen werden kann
(Named Requirement) |
||
|
spezifiziert, dass ein Objekt des Typs zerstört werden kann
(Named Requirement) |
||
Typeigenschaften |
||
|
Hinweis: Der Standard definiert keine benannten Anforderungen mit Namen, die in dieser Unterkategorie angegeben sind.
Dies sind Typkategorien, die durch die Kernsprache definiert werden. Sie sind hier nur aus Gründen der Konsistenz als benannte Anforderungen enthalten. |
||
|
Objekttypen, die keine Array-Typen oder Klassen-Typen sind
(Named Requirement) |
||
|
(deprecated in C++20)
|
POD (Plain Old Data) Typen, kompatibel mit C
struct
(Named Requirement) |
|
|
(C++11)
|
Objekte dieser Typen können ihre Werte beibehalten, nachdem ihre zugrundeliegenden Bytes kopiert wurden
(Named Requirement) |
|
|
(C++11)
(veraltet in C++26)
|
Objekte dieser Typen können trivial konstruiert und kopiert werden
(Named Requirement) |
|
|
(C++11)
|
diese Typen sind nützlich für die Kommunikation mit Code, der in anderen Programmiersprachen geschrieben wurde
(named requirement) |
|
|
Objekte dieser Typen können implizit erstellt werden, und ihre Lebensdauern können implizit begonnen werden
(Named Requirement) |
||
Bibliotheksweit |
||
|
Boolesche Operationen (
operator
&&
,
operator
||
, und
operator
!
) haben übliche Semantik
(Named Requirement) |
||
operator==
ist eine Äquivalenzrelation
(named requirement) |
||
operator<
ist eine strikte schwache Ordnungsrelation
(named requirement) |
||
|
kann mit einem unqualifizierten Nicht-Member-Funktionsaufruf
swap
(
)
ausgetauscht werden
(Named Requirement) |
||
|
(C++11)
|
ein
LegacyIterator
, der auf einen
Swappable
-Typ dereferenziert
(Named Requirement) |
|
|
(C++11)
|
ein zeigerähnlicher Typ, der einen Nullwert unterstützt
(named requirement) |
|
|
(C++11)
|
ein
FunctionObject
der für unterschiedliche Eingabewerte eine geringe Wahrscheinlichkeit hat, dieselbe Ausgabe zu liefern
(named requirement) |
|
|
ein Klassentyp, der Allokationsinformationen enthält
(Named Requirement) |
||
|
ein Objekt, das mit der Funktionsaufruf-Syntax aufgerufen werden kann
(named requirement) |
||
|
ein Typ, für den der Aufrufvorgang definiert ist
(Named Requirement) |
||
|
ein
FunctionObject
der einen in
bool
konvertierbaren Wert für ein Argument zurückgibt, ohne es zu modifizieren
(Named Requirement) |
||
|
ein
FunctionObject
, der einen in
bool
konvertierbaren Wert für zwei Argumente zurückgibt, ohne diese zu modifizieren
(Named Requirement) |
||
|
ein
BinaryPredicate
der eine Ordnungsrelation definiert
(Named Requirement) |
||
Container |
|
|
Datenstruktur, die den Zugriff auf Elemente mittels Iteratoren ermöglicht
(Named Requirement) |
|
|
Container mit bidirektionalen Iteratoren
(Named Requirement) |
|
|
(C++11)
|
Container, der einen Allocator verwendet
(Named Requirement) |
|
Container mit linear gespeicherten Elementen
(Named Requirement) |
|
|
(C++17)
|
Container mit Elementen, die an benachbarten Speicheradressen gespeichert sind
(Named Requirement) |
|
Container, der Elemente durch Zuordnung zu Schlüsseln speichert
(Named Requirement) |
|
|
(C++11)
|
Container, der Elemente in Buckets speichert, indem er sie Schlüsseln zuordnet
(Named Requirement) |
Containerelement |
|
|
(C++11)
|
Element kann in nicht initialisiertem Speicher standardmäßig konstruiert werden
(Named Requirement) |
|
(C++11)
|
Element kann in nicht initialisiertem Speicher kopierkonstruiert werden
(Named Requirement) |
|
(C++11)
|
Element kann in nicht initialisiertem Speicher per Move-Konstruktion erstellt werden
(Named Requirement) |
|
(C++11)
|
Element kann in nicht initialisiertem Speicher konstruiert werden
(Named Requirement) |
|
(C++11)
|
Element kann mit einem Allocator zerstört werden
(Named Requirement) |
Iterator |
|
|
Allgemeines Konzept zum Zugriff auf Daten innerhalb einer Datenstruktur
(named requirement) |
|
|
Iterator, der zum Lesen von Daten verwendet werden kann
(Named Requirement) |
|
|
Iterator, der zum Schreiben von Daten verwendet werden kann
(Named Requirement) |
|
|
Iterator, der zur mehrfachen Dateneingabe verwendet werden kann
(Named Requirement) |
|
|
Iterator, der sowohl inkrementiert als auch dekrementiert werden kann
(Named Requirement) |
|
|
Iterator, der in konstanter Zeit bewegt werden kann
(Named Requirement) |
|
|
(C++17)
|
Iterator für zusammenhängend gespeicherte Elemente
(Named Requirement) |
|
(C++20)
|
Iterator, der während der Auswertung konstanter Ausdrücke verwendet werden kann
(Named Requirement) |
Stream-I/O-Funktionen |
|
|
eine Stream-Eingabefunktion, die führende Leerzeichen nicht überspringt und die verarbeiteten Zeichen zählt
(Named Requirement) |
|
|
eine Stream-Eingabefunktion, die führende Leerzeichen überspringt
(Named Requirement) |
|
|
eine grundlegende Stream-Ausgabefunktion
(Named Requirement) |
|
|
eine Stream-Ausgabefunktion, die bei Fehlern failbit setzt und eine Referenz auf den Stream zurückgibt
(Named Requirement) |
|
Formatter |
|
|
(C++20)
|
abstrahiert Formatierungsoperationen für einen gegebenen Formatierungsargumenttyp und Zeichentyp
(Named Requirement) |
|
(C++20)
|
definiert Funktionen, die von der
Formatierungsbibliothek
verwendet werden
(Named Requirement) |
Zufallszahlengenerierung |
|
|
(C++11)
|
verarbeitet eine Folge von Ganzzahlen und erzeugt eine Folge von 32-Bit-Ganzzahlen ohne Vorzeichen
(Named Requirement) |
|
(C++11)
|
gibt gleichmäßig verteilte zufällige vorzeichenlose Ganzzahlen zurück
(Named Requirement) |
|
(C++11)
|
ein deterministischer
UniformRandomBitGenerator
, definiert durch den Seed
(Named Requirement) |
|
(C++11)
|
ein
RandomNumberEngine
, der die Ausgabe eines anderen
RandomNumberEngine
transformiert
(Named Requirement) |
|
(C++11)
|
gibt Zufallszahlen zurück, die gemäß einer gegebenen mathematischen Wahrscheinlichkeitsdichtefunktion verteilt sind
(Named Requirement) |
Nebenläufigkeit |
|
|
(C++11)
|
bietet exklusive Besitzsemantik für Ausführungsagenten (d.h. Threads)
(Named Requirement) |
|
(C++11)
|
ein
BasicLockable
, das versuchten Sperrerwerb unterstützt
(Named Requirement) |
|
(C++11)
|
ein
Lockable
das zeitgesteuerte Sperren unterstützt
(Named Requirement) |
|
(C++14)
|
bietet gemeinsame Besitzsemantik für Ausführungsagenten (d.h. Threads)
(Named Requirement) |
|
(C++14)
|
ein
SharedLockable
, das zeitgesteuerte Sperren-Akquisition unterstützt
(Named Requirement) |
|
(C++11)
|
ein
Lockable
das vor Datenrennen und sequentiell konsistenter Synchronisierung schützt
(Named Requirement) |
|
(C++11)
|
ein
TimedLockable
das vor Datenrennen schützt und sequenziell konsistente Synchronisation bietet
(Named Requirement) |
|
(C++17)
|
ein
Mutex
der Shared Ownership-Semantiken unterstützt
(Named Requirement) |
|
(C++14)
|
ein
TimedMutex
der Shared-Ownership-Semantik unterstützt
(Named Requirement) |
Ranges |
|
|
(C++20)
|
ein
FunctionObject
, das aus einem
viewable_range
und zusätzlichen Argumenten einen
Bereichsadapter
erzeugt
(benannte Anforderung) |
|
(C++20)
|
ein
FunctionObject
, das den Pipe-Operator unterstützt
(Named Requirement) |
Mehrdimensionale Ansichtsanpassung |
|
|
(C++23)
|
steuert die Abbildung des mehrdimensionalen Index in
mdspan
(Named Requirement) |
|
(C++23)
|
eine Policy, die die
LayoutMapping
Anforderungen erfüllt
(Named Requirement) |
|
(C++23)
|
eine Policy, die den Zugriff auf Daten-Handles in
mdspan
steuert
(Named Requirement) |
Sonstiges |
|
|
(C++11)
|
beschreibt eine Eigenschaft eines Typs
(Named Requirement) |
|
(C++11)
|
beschreibt eine Beziehung zwischen zwei Typen
(Named Requirement) |
|
(C++11)
|
modifiziert eine Eigenschaft eines Typs
(Named Requirement) |
|
(C++11)
|
fasst eine Dauer, einen Zeitpunkt und eine Funktion zur Ermittlung des aktuellen Zeitpunkts zusammen
(Named Requirement) |
|
(C++11)
|
ein
Clock
, der keine Ausnahmen wirft
(Named Requirement) |
|
definiert Typen und Funktionen für einen Zeichentyp
(Named Requirement) |
|
|
Bitset, Ganzzahl oder Aufzählung
(Named Requirement) |
|
|
ein Typ, bei dem die Initialisierung effektiv gleich der Zuweisung ist
(named requirement) |
|
|
(C++11)
|
definiert Typen und Funktionen, die von der
Regular Expressions-Bibliothek
verwendet werden
(Named Requirement) |
|
(C++11)
|
ein Typ mit constexpr-Konstruktor
(Named Requirement) |
|
Dieser Abschnitt ist unvollständig
Grund: Fehlt noch eine weitere Anforderung? |