namespace std
User GuideKI-GENERIERT
Ermöglicht die Integration von ara::core-Typen in Standard-Container und Sprachmittel der C++-Standardbibliothek.
Ermöglicht die Integration von ara::core-Typen in Standard-Container und Sprachmittel der C++-Standardbibliothek.
Der Namensraum std stellt im Modul core Template-Spezialisierungen von std::hash, std::tuple_size und std::tuple_element für Datentypen der AUTOSAR Adaptive Platform bereit. Dies ermöglicht den direkten Einsatz von Typen wie ara::core::String, ara::core::Optional, ara::core::Variant, ara::core::Vector und ara::core::Array in Standard-Containern und mit C++-Tuple-Sprachmitteln. Randbedingung ist, dass bei geschachtelten Typen die enthaltenen Datentypen zur Kompilierzeit ebenfalls über gültige Spezialisierungen verfügen müssen.
Kontext
Im Modul core der AUTOSAR Adaptive Platform dient der Namensraum std der nahtlosen Einbindung plattformspezifischer Basistypen in die C++-Standardbibliothek. Anstatt neue Typen einzuführen, stellt der Namensraum gezielte Template-Spezialisierungen standardisierter Hilfsklassen bereit. Die Interaktionspartner umfassen drei wesentliche Komponenten: die generischen Typen der C++-Standardbibliothek (insbesondere ungeordnete assoziative Container und Tuple-Hilfsmittel), die Template-Spezialisierungen innerhalb von std sowie die im Modul core definierten Datentypen ara::core::Array, ara::core::Monostate, ara::core::Optional, ara::core::String, ara::core::StringView, ara::core::Variant und ara::core::Vector.
Kontextdiagramm: Zusammenspiel von Standard-Containern, den Spezialisierungen in std und den ara::core-Typen. Quellen: Payload-Deklarationen des Moduls core
Die Spezialisierungen von std::hash ermöglichen es, adaptive Kern-Datentypen direkt als Schlüssel in Standard-Containern wie std::unordered_map oder std::unordered_set einzusetzen. Parallel dazu erweitern die Spezialisierungen std::tuple_size und std::tuple_element für ara::core::Array die Unterstützung für standardisierte Metaprogrammierungs-Schnittstellen und Sprachmittel.
Nutzungspfad
Ein typischer Nutzungspfad beginnt mit der Verwendung eines ara::core-Datentyps in generischem C++-Code. Beispielsweise deklariert eine Anwendung eine Hash-Tabelle mit Schlüsseln des Typs ara::core::String oder ara::core::Optional<T>. Beim Einfügen, Löschen oder Nachschlagen greift der Container implizit auf std::hash<ara::core::String> bzw. std::hash<ara::core::Optional<T>> zu, um den Schlüssel-Hashwert zu bestimmen.
Die Spezialisierungen decken unterschiedliche Datenstrukturen ab:
- Zeichenketten und Sichten:
std::hash<ara::core::String>undstd::hash<ara::core::StringView>berechnen Hashwerte über die enthaltene Zeichenfolge. - Zusammengesetzte Typen:
std::hash<ara::core::Optional<T>>,std::hash<ara::core::Variant<...>>undstd::hash<ara::core::Vector<T, Allocator>>ermöglichen das Hashing komplexer Typstrukturen. Interpretation: Die Spezialisierungen fürara::core::Optionalundara::core::Variantdürften sich am semantischen Verhalten der standardisierten Vorbilder orientieren und für leere oder unbesetzte Zustände deterministische Werte erzeugen. Frage Q-c432b06f0ba32c5e (offen) - Zustandslose Typen:
std::hash<ara::core::Monostate>stellt eine Hashfunktion für leere Zustände bereit, wie sie typischerweise in Varianten eingesetzt werden. - Tuple-Protokoll: Für feste Datenfelder stellt
std::tuple_size<ara::core::Array<T, N>>zur Kompilierzeit die Elementanzahl bereit, währendstd::tuple_element<I, ara::core::Array<T, N>>den Datentyp der PositionIermittelt. Interpretation: Die Spezialisierungen vonstd::tuple_sizeundstd::tuple_elementdürften damit die Verwendung vonara::core::Arraymit strukturierten Bindungen (Structured Bindings) ermöglichen. Frage Q-3abb70390e67dbce (offen)
Fehlerszenarien
Da es sich bei den Elementen im Namensraum std ausschließlich um Template-Spezialisierungen handelt, treten Fehlerszenarien vorrangig zur Übersetzungszeit auf. Typische Problemkonstellationen umfassen:
- Fehlende Hashing-Fähigkeit der Basistypen: Wird
std::hashfür einen geschachtelten Typ wieara::core::Optional<T>oderara::core::Vector<T, Allocator>instanziiert, muss für den ElementtypTebenfalls eine gültige Spezialisierung vonstd::hashvorhanden sein. Fehlt diese, führt dies zu einem Kompilierfehler. - Ungültige Indexierung im Tuple-Protokoll: Der Zugriff auf
std::tuple_element<I, ara::core::Array<T, N>>mit einem IndexI >= Nverletzt die Vorbedingung des Templates und bricht den Übersetzungsvorgang ab.
Interpretation: Fehlerszenarien dürften sich im Wesentlichen auf Kompilierzeitfehler bei unvollständigen Typspezialisierungen oder statischen Bereichsverletzungen beschränken, da der Spezifikationsauszug keine Laufzeit-Fehlercodes oder Ausnahmeschnittstellen definiert. Frage Q-8cda269c72bd701c (offen)
Dieser Leitfaden basiert ausschließlich auf den deklarierten Klassenspezialisierungen des Moduls core für Release R25-11.
Themenkarte
Klassendiagramm
Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.
Für dieses Release liegen keine Elementdaten vor
Klassen
Specialization of std::hash (hashing function for ara::core::Monostate) ≙ std::hash
Spezialisierungen hash< ara::core::Optional< T > hash< ara::core::String > hash< ara::core::StringView > hash< ara::core::Variant< hash< ara::core::Vector< T, Allocator > >
≙ [array]
≙ [array]
gemini-3.8-flash-medium· 2026-10-13