命名空间 std
用户指南人工智能生成
允许将 ara::core 类型集成到 C++ 标准库的标准容器和语言工具中。
允许将 ara::core 类型集成到 C++ 标准库的标准容器和语言工具中。
命名空间 std 在模块 core 中为 AUTOSAR Adaptive Platform 的数据类型提供 std::hash、std::tuple_size 和 std::tuple_element 的模板特化。这使得可以直接在标准容器中以及结合 C++ 元组语言工具来使用诸如 ara::core::String、ara::core::Optional、ara::core::Variant、ara::core::Vector 和 ara::core::Array 等类型。约束条件是:对于嵌套类型,所包含的数据类型在编译时也必须具有有效的特化。
上下文
在 AUTOSAR Adaptive Platform 的模块 core 中,命名空间 std 用于将平台特定的基础类型无缝集成到 C++ 标准库中。该命名空间并非引入新类型,而是提供标准化辅助类的针对性模板特化。交互伙伴包括三个基本组件:C++ 标准库的泛型类型(特别是非序关联容器和元组辅助工具)、std 内的模板特化以及在模块 core 中定义的数据类型 ara::core::Array、ara::core::Monostate、ara::core::Optional、ara::core::String、ara::core::StringView、ara::core::Variant 和 ara::core::Vector。
上下文图:标准容器、std 中的特化与 ara::core 类型之间的相互作用。来源:core 模块的有效负载声明
std::hash 的特化使得可以直接将自适应核心数据类型用作标准容器(如 std::unordered_map 或 std::unordered_set)中的键。与此同时,针对 ara::core::Array 的特化 std::tuple_size 和 std::tuple_element 扩展了对标准化元编程接口和语言工具的支持。
使用路径
典型使用路径始于在泛型 C++ 代码中使用 ara::core 数据类型。例如,应用程序声明一个键类型为 ara::core::String 或 ara::core::Optional<T> 的哈希表。在插入、删除或查找时,容器会隐式访问 std::hash<ara::core::String> 或 std::hash<ara::core::Optional<T>> 以确定键的哈希值。
这些特化涵盖了不同的数据结构:
- 字符串和视图:
std::hash<ara::core::String>和std::hash<ara::core::StringView>计算所包含字符序列的哈希值。 - 复合类型:
std::hash<ara::core::Optional<T>>、std::hash<ara::core::Variant<...>>和std::hash<ara::core::Vector<T, Allocator>>支持对复杂类型结构进行哈希计算。解释:针对ara::core::Optional和ara::core::Variant的特化推测以标准化原型的语义行为为导向,并为空状态或未占用状态生成确定性值。 问题 Q-c432b06f0ba32c5e (未决) - 无状态类型:
std::hash<ara::core::Monostate>为空状态提供哈希函数,正如它们通常在变体类型中所使用的那样。 - 元组协议:对于固定数据字段,
std::tuple_size<ara::core::Array<T, N>>在编译时提供元素数量,而std::tuple_element<I, ara::core::Array<T, N>>确定位置I的数据类型。解释:std::tuple_size和std::tuple_element的特化推测由此允许将ara::core::Array与结构化绑定(Structured Bindings)结合使用。 问题 Q-3abb70390e67dbce (未决)
错误场景
由于命名空间 std 中的元素完全是模板特化,因此错误场景主要发生在编译时。典型的问题情况包括:
- 基础类型缺少哈希能力:如果为嵌套类型(如
ara::core::Optional<T>或ara::core::Vector<T, Allocator>)实例化std::hash,则元素类型T也必须存在std::hash的有效特化。如果缺少该特化,将导致编译错误。 - 元组协议中的无效索引:使用索引
I >= N访问std::tuple_element<I, ara::core::Array<T, N>>违反了模板的前置条件并会中止编译过程。
解释:错误场景推测基本上局限于不完整类型特化或静态越界时的编译时错误,因为规范摘录中未定义任何运行时错误代码或异常接口。 问题 Q-8cda269c72bd701c (未决)
本指南仅基于 core 模块针对 Release R25-11 声明的类特化。
类图
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.
此版本没有元素数据
类
Specialization of std::hash (hashing function for ara::core::Monostate) ≙ std::hash
特化 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-low· 2026-10-13 · 德文原文