DEENESPTFRRUARHIKOZHNL

namespace std

User GuideKI-GENERIERT

Ermöglicht die Integration von ara::core-Typen in Standard-Container und Sprachmittel der C++-Standardbibliothek.
KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: e52b54851dc1 Herkunft Offene Fragen (3)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

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.

std_context app Standard-Container und Sprachmittel (z. B. std::unordered_map, Structured Binding) std_spec Spezialisierungen in namespace std (std::hash, std::tuple_size, std::tuple_element) app->std_spec nutzt ara_types ara::core Datentypen (Array, Optional, String, StringView, Variant, Vector, Monostate) std_spec->ara_types bindet ein

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> und std::hash<ara::core::StringView> berechnen Hashwerte über die enthaltene Zeichenfolge.
  • Zusammengesetzte Typen: std::hash<ara::core::Optional<T>>, std::hash<ara::core::Variant<...>> und std::hash<ara::core::Vector<T, Allocator>> ermöglichen das Hashing komplexer Typstrukturen. Interpretation: Die Spezialisierungen für ara::core::Optional und ara::core::Variant dü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ährend std::tuple_element<I, ara::core::Array<T, N>> den Datentyp der Position I ermittelt. Interpretation: Die Spezialisierungen von std::tuple_size und std::tuple_element dürften damit die Verwendung von ara::core::Array mit 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::hash für einen geschachtelten Typ wie ara::core::Optional<T> oder ara::core::Vector<T, Allocator> instanziiert, muss für den Elementtyp T ebenfalls eine gültige Spezialisierung von std::hash vorhanden 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 Index I >= N verletzt 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.

G cluster_ns std nstd__hash__ara__core__Monostate__ «struct» hash< ara::core::Monostate > nstd__hash__ara__core__Optional__T__ «struct» hash< ara::core::Optional< T > nstd__hash__ara__core__Optional__T____ hash< ara::core::Optional< T > > nstd__hash__ara__core__String__ «struct» hash< ara::core::String > nstd__hash__ara__core__StringView__ «struct» hash< ara::core::StringView > nstd__hash__ara__core__Variant_ «struct» hash< ara::core::Variant< nstd__hash__ara__core__Variant__Types_______ hash< ara::core::Variant< Types... > > nstd__hash__ara__core__Vector__T__Allocator____ «struct» hash< ara::core::Vector< T, Allocator > > nstd__tuple_element__I__ara__core__Array__T__N____ «struct» tuple_element< I, ara::core::Array< T, N > > nstd__tuple_size__ara__core__Array__T_ «struct» tuple_size< ara::core::Array< T, next_integral__constant__size_t__N__ integral_ constant< size_t, N > nstd__tuple_size__ara__core__Array__T_->next_integral__constant__size_t__N__

Detailansicht

Wähle in der Gliederung einen Eintrag aus.

Klassen

hash class

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]