DEENESPTFRRUARHIKOZHNL

模块 ara::core — Adaptive Platform Core

Spezifikation: AUTOSAR_AP_SWS_Core.pdf (R25-11) · 1237 API-Records

模块指南人工智能生成

提供全平台通用的C++基础类型、故障安全的Result类型以及确定性的内存池。
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 54405fb1f5a0 来源 未决问题(2)
因果锚点:R25-11 自 R25-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

提供全平台通用的C++基础类型、故障安全的Result类型以及确定性的内存池。

模块core为AUTOSAR Adaptive Platform提供全平台通用的基础类型、PMR内存池以及异步同步原语Future和Promise(SWArchitecture 第60页、[SWS_CORE_00326])。为满足严苛的安全和实时性要求,标签联合体(Sum Type)Result<T, E>通过确定性的返回值取代了传统异常([SWS_CORE_00751])。在发生无法修复的系统错误时,快速失败(Fail-Fast)函数Abort()可确保进程立即、受控地终止([SWS_CORE_00052])。

模块core作为AUTOSAR Adaptive Platform的基础功能集群,为所有平台服务和应用程序提供统一的数据结构、异步通信原语以及内存管理机制(SWArchitecture 第60页)。为了确保POSIX操作系统环境中的确定性流程与功能安全,core通过类型安全的Result类型Result<T, E>取代了传统的C++异常,并通过多态分配器控制动态内存分配([SWS_CORE_00041]、[SWS_CORE_00751])。

CoreArch cluster_core ara::core app Adaptive Application fc Funktionale Cluster (ara::com, ara::ts, etc.) app->fc lifecycle Lebenszyklus & Prozessabbruch (Initialize, Deinitialize, Abort) app->lifecycle concurrency 异步控制流 (Future、Promise、Executor) app->concurrency error_mgmt Deterministisches Fehlermanagement (Result, ErrorCode, ErrorDomain) app->error_mgmt memory Speicherverwaltung (PMR) (MemoryResource, PoolResources) app->memory types Container & Utility-Typen (Optional, Array, Vector, Map) app->types fc->concurrency fc->error_mgmt fc->memory fc->types posix Betriebssystem & POSIX-Laufzeitumgebung lifecycle->posix memory->posix

上下文图:功能集群ara::core及其接口领域在Adaptive Platform中的嵌入。来源:SWArchitecture 第60页、SWArchitecture 第36页

针对并发同步,core实现了Future与Promise的协同交互([SWS_CORE_00326]、[SWS_CORE_00344])。生产者通过Promise提供计算状态或错误,与此同时,Future允许消费者既通过wait_for()进行带超时的查询,也通过then()进行响应式转发([SWS_CORE_00329]、[SWS_CORE_00331]、TimeSynchronization 第90页)。

ResultEval start Empfang von Result<T, E> check 通过 HasValue() / operator bool() 检查 start->check val_path 成功:通过 Value() / operator*() 访问 check->val_path true err_path 错误情况:通过 Error() 访问 check->err_path false use_val Nutzlast T verarbeiten val_path->use_val check_throw Exception-Modus aktiviert? err_path->check_throw throw_exc ValueOrThrow() 抛出异常 check_throw->throw_exc 是 handle_err Deterministische Fehlerbehandlung via ErrorCode check_throw->handle_err 不

活动图:无错误情况下及错误情况下Result对象的确定性求值路径。来源:[SWS_CORE_00751]、[SWS_CORE_00755]、[SWS_CORE_00757]、[SWS_CORE_00766]

为避免内存碎片化,该模块提供了如SynchronizedPoolResource和UnsynchronizedPoolResource等池资源,将分配限制为固定大小的Chunk([SWS_CORE_00030]、[SWS_CORE_00067]、SWArchitecture 第61页)。一旦发生无法克服的错误状态,平台将通过Abort()在预先执行已注册的AbortHandler后强制使进程立即执行快速失败(Fail-Fast)终止([SWS_CORE_00051]、[SWS_CORE_00052])。

ara::core的系统角色与架构基础

模块core构成了AUTOSAR Adaptive Platform的基石,并为所有功能集群和Adaptive Application提供基本类型定义、内存管理机制以及基础接口(SWArchitecture 第60页)。与特定于应用的服务不同,core被设计为进程局部的,并定义了在POSIX操作系统环境中实现可移植、确定性且资源高效的C++软件所必需的抽象(SWArchitecture 第36页)。

在架构上,该模块充当底层操作系统函数与Adaptive Platform上层之间的标准化接口(SWArchitecture 第60页)。在此过程中,core通过使动态内存分配可控,并在常规控制流中避免全面使用C++异常,从而满足了功能安全(ASIL)和实时能力的核心要求([SWS_CORE_00052]、[SWS_CORE_00751])。全平台通用基础类型的提供避免了中间件组件(如ara::com或ara::ts)之间出现专有的孤岛解决方案(ARAComAPI 第46页、TimeSynchronization 第90页)。

CoreArch cluster_core ara::core app Adaptive Application fc Funktionale Cluster (ara::com, ara::ts, etc.) app->fc lifecycle Lebenszyklus & Prozessabbruch (Initialize, Deinitialize, Abort) app->lifecycle concurrency 异步控制流 (Future、Promise、Executor) app->concurrency error_mgmt Deterministisches Fehlermanagement (Result, ErrorCode, ErrorDomain) app->error_mgmt memory Speicherverwaltung (PMR) (MemoryResource, PoolResources) app->memory types Container & Utility-Typen (Optional, Array, Vector, Map) app->types fc->concurrency fc->error_mgmt fc->memory fc->types posix Betriebssystem & POSIX-Laufzeitumgebung lifecycle->posix memory->posix

上下文图:功能集群ara::core及其接口领域在Adaptive Platform中的嵌入。来源:SWArchitecture 第60页、SWArchitecture 第36页

通过Future和Promise实现的异步控制流与数据流

为了实现并发且解耦的交互,ara::core通过Promise和Future实现了生产者-消费者模式([SWS_CORE_00326]、[SWS_CORE_00341])。Promise代表写入接口,异步工作线程或通信Skeleton通过该接口存放结果或错误([SWS_CORE_00345]、[SWS_CORE_00353])。与之对应的消费端是Future,它监视共享状态(Shared State)并封装对返回值的类型安全访问(ARAComAPI 第46页、ARAComAPI 第59页)。

为了避免阻塞客户端线程,Future除了提供同步阻塞式查询函数get()([SWS_CORE_00326])外,还提供了限时等待操作:wait_for()和wait_until()返回类型为FutureStatus的状态指示器([SWS_CORE_00329]、[SWS_CORE_00330]、ARAComAPI 第1页)。通过方法then()可以注册在结果到达时自动执行的回调;在此可选择集成用户自定义的Executor,以便将执行控制定向到特定的线程池([SWS_CORE_00024]、[SWS_CORE_00331]、[SWS_CORE_00337])。Future和Promise的复制操作被显式禁止,以确保独占所有权([SWS_CORE_00334]、[SWS_CORE_00350])。

通过 Promise 和 Future 进行异步通信Consumer (App)FuturePromiseProducer (Worker)Erzeuge Promise()get_future()Erzeuge Future<T, E>将 Future 传递给 ConsumerUse Case: 等待与查询阶段wait_for(timeoutDuration)FutureStatus::kTimeoutUse Case: Ergebnisbereitstellungset_value(value) 或 SetError(error)状态转换:Shared State 已满足get() 或 GetResult()返回值或 Result<T, E>

时序图:工作线程与应用程序之间通过Promise和Future进行的异步值与错误传递。来源:[SWS_CORE_00326]、[SWS_CORE_00329]、[SWS_CORE_00344]、[SWS_CORE_00345]、TimeSynchronization 第90页

确定性错误管理:Result、ErrorCode与ErrorDomain

Adaptive Platform中面向安全编程的一个核心方面是在常规运行中严格避免不受控的异常。ara::core::Result<T, E>充当类型安全的标签联合体(Sum Type)封装,包含类型为T的成功有效负载值或类型为E的错误对象([SWS_CORE_00721]、[SWS_CORE_00723]、[SWS_CORE_00751])。针对引用类型Result<T&, E>以及无返回值操作Result<void, E>均存在特化([SWS_CORE_00821]、[SWS_CORE_00908])。

所包含的状态通过HasValue()或显式转换运算符operator bool()进行检查([SWS_CORE_00751]、[SWS_CORE_00752])。对有效负载数据的访问通过Value()或operator*()进行,而错误则通过Error()查询([SWS_CORE_00755]、[SWS_CORE_00757])。为了进行函数式后续处理和错误传播,Result提供了诸如Bind()、ValueOr()和Resolve()等方法([SWS_CORE_00761]、[SWS_CORE_00768])。错误通过ErrorCode建模,它将数字错误代码CodeType与唯一的域标识符ErrorDomain以及可选的诊断附加数据SupportDataType关联起来([SWS_CORE_00121]、[SWS_CORE_00122]、[SWS_CORE_00512])。方法ValueOrThrow()作为针对启用了异常处理的环境的桥梁存在,但在出错时会抛出与该域关联的异常([SWS_CORE_00154]、[SWS_CORE_00766])。

ResultEval start Empfang von Result<T, E> check 通过 HasValue() / operator bool() 检查 start->check val_path 成功:通过 Value() / operator*() 访问 check->val_path true err_path 错误情况:通过 Error() 访问 check->err_path false use_val Nutzlast T verarbeiten val_path->use_val check_throw Exception-Modus aktiviert? err_path->check_throw throw_exc ValueOrThrow() 抛出异常 check_throw->throw_exc 是 handle_err Deterministische Fehlerbehandlung via ErrorCode check_throw->handle_err 不

活动图:无错误情况下及错误情况下Result对象的确定性求值路径。来源:[SWS_CORE_00751]、[SWS_CORE_00755]、[SWS_CORE_00757]、[SWS_CORE_00766]

基于池资源的多态内存管理

在标准堆上进行动态分配会带来非确定性和内存碎片化的风险。因此,ara::core集成了基于多态内存资源(PMR)的内存管理,借鉴了C++ NVI模式(Non-Virtual Interface)(SWArchitecture 第61页)。基类MemoryResource声明了公共接口allocate()和deallocate(),它们在内部调用纯虚方法do_allocate()和do_deallocate()([SWS_CORE_00041]、[SWS_CORE_00061])。

针对具有实时关键性的分配模式,提供了专用的池资源:SynchronizedPoolResource通过PoolOptions提供由预先配置的Chunk和块大小构成的线程安全分配([SWS_CORE_00027]、[SWS_CORE_00030])。对于无同步开销的严格线程局部处理阶段,则使用UnsynchronizedPoolResource([SWS_CORE_00046]、[SWS_CORE_00067])。通过release(),可以将整个已分配的内存区域一步释放回上游的upstream_resource(),这在面向阶段的工作流中有效防止了内存泄漏([SWS_CORE_00037]、[SWS_CORE_00038]、[SWS_CORE_00065])。

PMRHierarchy mr MemoryResource (Basisklasse / NVI) + allocate() + deallocate() - do_allocate() - do_deallocate() sync_pool SynchronizedPoolResource - do_allocate() [thread-safe] - do_deallocate() [thread-safe] + release() + options() sync_pool->mr erbt von unsync_pool UnsynchronizedPoolResource - do_allocate() [thread-local] - do_deallocate() [thread-local] + release() + options() unsync_pool->mr erbt von

类图:基于非虚接口(NVI)模式的多态内存资源层级结构。来源:SWArchitecture 第61页、[SWS_CORE_00030]、[SWS_CORE_00041]、[SWS_CORE_00061]

基础实用工具与容器类型(Optional、Array、Vector、Map)

为避免未定义行为并确保清晰的语义,core 对基本容器和实用工具类型进行了规范化。ara::core::Optional<T> 表示可能存在或不存在的值,而无需求助于不安全的空指针([SWS_CORE_01103]、[SWS_CORE_01104]、ARAComAPI 第1页)。其状态通过 has_value() 或 operator bool() 查询,而访问则通过 value()、value_or() 或 operator*() 进行([SWS_CORE_01128]、[SWS_CORE_01129]、[SWS_CORE_01130]、[SWS_CORE_01134])。专用的引用重载 Optional<T&> 允许安全地持有可选引用([SWS_CORE_01151]、[SWS_CORE_01167])。

对于固定大小的数据结构,该模块提供了 Array<T, N>,它支持通过 operator[] 进行直接索引、使用 at() 进行带范围检查的访问以及标准迭代器([SWS_CORE_01250]、[SWS_CORE_01265]、[SWS_CORE_01273])。比较运算符按照严格的编码准则实现,具有 bool 返回值以及异常安全性([SWS_CORE_01290]、CPP14Guidelines 第241页)。动态增长的序列和关联容器由 Vector<T, Allocator> 和 Map<Key, T, Compare, Allocator> 涵盖([SWS_CORE_01318]、[SWS_CORE_01428])。这两种类型均接受可配置的分配器,从而使分配能够通过多态 MemoryResource 池无缝处理([SWS_CORE_00066]、[SWS_CORE_01303]、[SWS_CORE_01406])。

错误情况下的行为与快速失败终止

如果进程无法安全地补偿严重错误状态,Adaptive Platform 的快速失败原则便会生效(SWArchitecture 第60页)。通过接口 Abort() 会引发正在运行的进程立即且无条件地终止([SWS_CORE_00052])。该函数被声明为 [[noreturn]] 和 noexcept,以确保不会有栈展开例程或析构函数产生不正确的后续状态([SWS_CORE_00052]、SWArchitecture 第36页)。

为了在终止前保存易失性诊断信息或执行最后的紧急日志记录操作,应用程序可以通过 SetAbortHandler() 或 AddAbortHandler() 注册用户自定义的回调函数([SWS_CORE_00050]、[SWS_CORE_00051]、[SWS_CORE_00054])。已注册的中止处理程序必须满足签名 void() noexcept([SWS_CORE_00053])。在执行处理程序后,平台会强制最终终止进程,从而不可能在未定义的内存状态下继续运行(SWArchitecture 第60页)。

AbortFlow error_detect 严重、不可恢复的错误状态 call_abort Aufruf von ara::core::Abort(args...) error_detect->call_abort check_handler AbortHandler registriert? call_abort->check_handler exec_handler 执行已注册的 AbortHandler (保存诊断信息,记录紧急日志) check_handler->exec_handler 是 sys_terminate 直接终止进程而不展开堆栈 ([[noreturn]] 终止) check_handler->sys_terminate 不 exec_handler->sys_terminate

活动图:通过 Abort() 进行快速失败中止并执行 AbortHandler 的控制流。来源:SWArchitecture 第60页、[SWS_CORE_00051]、[SWS_CORE_00052]

进一步详细证据

R25-11 版本中 core 的规范基于一系列规范性规定和架构模型。对于进程生命周期和紧急中止行为,Initialize()、Deinitialize() 以及 Abort() 和 SetAbortHandler() 具有决定性作用([SWS_CORE_00051]、[SWS_CORE_00052]、SWArchitecture 第60页)。异步通信模型主要基于 Future([SWS_CORE_00326]、[SWS_CORE_00329])和 Promise([SWS_CORE_00344]、[SWS_CORE_00345]),它们的相互协作在诸如 ara::com 和 ara::ts 等面向应用的集群中得到验证(ARAComAPI 第46页、TimeSynchronization 第90页)。

无错误的数据与内存管理由 Result([SWS_CORE_00751]、[SWS_CORE_00766])、ErrorCode([SWS_CORE_00512])以及 PMR 内存类 SynchronizedPoolResource 和 UnsynchronizedPoolResource 的规范进行标准化([SWS_CORE_00030]、[SWS_CORE_00046]、SWArchitecture 第61页)。此外,容器和比较准则定义了安全关键型完整系统中的确定性数据保存([SWS_CORE_01103]、[SWS_CORE_01250]、[SWS_CORE_01318]、CPP14Guidelines 第241页)。

本指南由 AI 策展助手基于针对 R25-11 的 AUTOSAR 规范生成。

function: 1060 type alias: 101 class: 34 struct: 26 variable: 13 enumeration: 3

ara::core

Array 类

Implementation of std::array type from [array.syn] The implicitly-declared special member functions specified in [array.cons] are not expli ≙ std::array

访问 get 4
template <std::size_t I, typename T, std::size_t N> constexpr T & get (Array< T, N > &a) noexcept; SWS_CORE_01282
template <std::size_t I, typename T, std::size_t N> constexpr T && get (Array< T, N > &&a) noexcept; SWS_CORE_01283
template <std::size_t I, typename T, std::size_t N> constexpr T const & get (const Array< T, N > &a) noexcept; SWS_CORE_01284
template <size_t I, class T, size_t N> constexpr const T && get (const Array< T, N > &&) noexcept; SWS_CORE_01286
比较 != < <= == > >= 6
template <typename T, std::size_t N> bool operator!= (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01291
template <typename T, std::size_t N> bool operator< (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01292
template <typename T, std::size_t N> bool operator<= (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01294
template <typename T, std::size_t N> bool operator== (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01290
template <typename T, std::size_t N> bool operator> (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01293
template <typename T, std::size_t N> bool operator>= (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01295
交换 swap 1
template <typename T, std::size_t N> void swap (Array< T, N > &lhs, Array< T, N > &rhs) noexcept(noexcept(lhs.swap(rhs))); SWS_CORE_01296

Implementation of std::pmr::basic_string type from [basic.string] ≙ std::pmr::basic_string

比较 != < <= == > >= 18
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator!= (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03367
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator!= (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03368
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator!= (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03369
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator< (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03370
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator< (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03371
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator< (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03372
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator<= (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03376
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator<= (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03377
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator<= (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03378
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator== (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03364
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator== (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03365
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator== (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03366
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator> (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03373
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator> (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03374
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator> (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03375
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator>= (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03379
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator>= (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03380
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator>= (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03381
连接 + 12
template <typename Allocator> BasicString< Allocator > operator+ (const BasicString< Allocator > &lhs, const BasicString< Allocator > &rhs); SWS_CORE_03352
template <typename Allocator> BasicString< Allocator > operator+ (BasicString< Allocator > &&lhs, const BasicString< Allocator > &rhs); SWS_CORE_03353
template <typename Allocator> BasicString< Allocator > operator+ (const BasicString< Allocator > &lhs, BasicString< Allocator > &&rhs); SWS_CORE_03354
template <typename Allocator> BasicString< Allocator > operator+ (BasicString< Allocator > &&lhs, BasicString< Allocator > &&rhs); SWS_CORE_03355
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (const charT *lhs, const Basic String< Allocator > &rhs); SWS_CORE_03356
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (const charT *lhs, BasicString< Allocator > &&rhs); SWS_CORE_03357
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (charT lhs, const BasicString< Allocator > &rhs); SWS_CORE_03358
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (charT lhs, BasicString< Allocator > &&rhs); SWS_CORE_03359
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03360
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (BasicString< Allocator > &&lhs, const charT *rhs); SWS_CORE_03361
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (const BasicString< Allocator > &lhs, charT rhs); SWS_CORE_03362
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (BasicString< Allocator > &&lhs, charT rhs); SWS_CORE_03363
输入/输出 getline << >> 6
template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_istream< charT, traits > & getline (std::basic_istream< charT, traits > &is, BasicString< Allocator > &str, charT delim); SWS_CORE_03401
template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_istream< charT, traits > & getline (std::basic_istream< charT, traits > &&is, BasicString< Allocator > &str, charT delim); SWS_CORE_03402
template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_istream< charT, traits > & getline (std::basic_istream< charT, traits > &is, BasicString< Allocator > &str); SWS_CORE_03403
template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_istream< charT, traits > & getline (std::basic_istream< charT, traits > &&is, BasicString< Allocator > &str); SWS_CORE_03404
template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_ostream< charT, traits > & operator<< (std::basic_ostream< charT, traits > &os, const BasicString< Allocator > &str); SWS_CORE_03400
template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_istream< charT, traits > & operator>> (std::basic_istream< charT, traits > &is, BasicString< Allocator > &str); SWS_CORE_03399
转换 to_string 9
String to_string (int val); SWS_CORE_03382
String to_string (unsigned val); SWS_CORE_03383
String to_string (long val); SWS_CORE_03384
String to_string (unsigned long val); SWS_CORE_03385
String to_string (long long val); SWS_CORE_03386
String to_string (unsigned long long val); SWS_CORE_03387
String to_string (float val); SWS_CORE_03388
String to_string (double val); SWS_CORE_03389
String to_string (long double val); SWS_CORE_03390
交换 swap 1
template <typename Allocator> void swap (BasicString< Allocator > &lhs, BasicString< Allocator > &rhs); SWS_CORE_03296
其他 stod stof stoi stol stold stoll stoul stoull 8
double stod (const ara::core::String &str, size_t *idx=nullptr); SWS_CORE_03397
float stof (const ara::core::String &str, size_t *idx=nullptr); SWS_CORE_03396
int stoi (const ara::core::String &str, size_t *idx=nullptr, int base=10); SWS_CORE_03391
long stol (const ara::core::String &str, size_t *idx=nullptr, int base=10); SWS_CORE_03392
long double stold (const ara::core::String &str, size_t *idx=nullptr); SWS_CORE_03398
long long stoll (const ara::core::String &str, size_t *idx=nullptr, int base=10); SWS_CORE_03394
unsigned long stoul (const ara::core::String &str, size_t *idx=nullptr, int base=10); SWS_CORE_03393
unsigned long long stoull (const ara::core::String &str, size_t *idx=nullptr, int base=10); SWS_CORE_03395
Bitset 类

Implementation of std::bitset type from [bitset] ≙ std::bitset

输入/输出 << >> 2
template <class CharT = char, class Traits = std::char_traits<CharT>, std::size_t N> std::basic_ostream< CharT, Traits > & operator<< (std::basic_ostream< CharT, Traits > &os, const Bitset< N > &x); SWS_CORE_01756
template <class CharT, class Traits, std::size_t N> std::basic_istream< CharT, Traits > & operator>> (std::basic_istream< CharT, Traits > &is, Bitset< N > &x); SWS_CORE_01755
其他 & | ˆ 3
template <std::size_t N> Bitset< N > operator& (const Bitset< N > &, const Bitset< N > &) noexcept; SWS_CORE_01752
template <std::size_t N> Bitset< N > operator| (const Bitset< N > &, const Bitset< N > &) noexcept; SWS_CORE_01753
template <std::size_t N> Bitset< N > operatorˆ (const Bitset< N > &, const Bitset< N > &) noexcept; SWS_CORE_01754

An error domain for errors originating from the ara::core Functional Cluster.

继承自 ErrorDomain

Exception type thrown for ara::core errors.

继承自 Exception

Encapsulation of an error code

创建 MakeErrorCode 2
constexpr ErrorCode MakeErrorCode (FutureErrc code, Error Domain::SupportDataType data) noexcept; SWS_CORE_00490
constexpr ErrorCode MakeErrorCode (CoreErrc code, ErrorDomain::Support DataType data) noexcept; SWS_CORE_05290
比较 != == 2
constexpr bool operator!= (const ErrorCode &lhs, const ErrorCode &rhs) noexcept; SWS_CORE_00572
constexpr bool operator== (const ErrorCode &lhs, const ErrorCode &rhs) noexcept; SWS_CORE_00571

Encapsulation of an ErrorDomain

作为基类 CoreErrorDomain, FutureErrorDomain

Base type for all ARA exception types

继承自 std::exception

作为基类 CoreException, FutureException

Provides an interface for a executing context, which asynchronously invokes Callable ([4] [func.wrap.func]) objects in a guaranteed thread-s

Future 类

Implementation of std::future from [future.syn] in [11] ≙ std::future

特化 Future< void, E >

Error domain for errors originating from ara::core::Future and ara::core::Promise

继承自 ErrorDomain

Exception type thrown by ara::core::Future and ara::core::Promise

继承自 Exception

hash 类

≙ [bitset]

Denote an index-distinguishing operation to be performed in-place

Denote an operation to be performed in-place

Denote a type-distinguishing operation to be performed in-place

Representation of an AUTOSAR Instance Specifier, which is basically an AUTOSAR shortName path wrapper.

比较 != == 2
bool operator!= (ara::core::StringView lhs, const InstanceSpecifier &rhs) noexcept; SWS_CORE_08082
bool operator== (ara::core::StringView lhs, const InstanceSpecifier &rhs) noexcept; SWS_CORE_08081

As per std::is_nothrow_swappable, see [meta.unary.prop] in [11] ≙ std::is_nothrow_swappable

Map 类

Implementation of std::pmr::map container from [map] ≙ std::pmr::map

交换 swap 1
template <class Key, class T, class Compare, class Allocator> void swap (Map< Key, T, Compare, Allocator > &lhs, Map< Key, T, Compare, Allocator > &rhs) noexcept(noexcept(lhs.swap(rhs))); SWS_CORE_01496

Implementation of std::pmr::memory_resource type from [mem.res.class] ≙ std::pmr::memory_resource

作为基类 MonotonicBufferResource, SynchronizedPoolResource, UnsynchronizedPoolResource

比较 == 1
bool operator== (const MemoryResource &a, const MemoryResource &b) noexcept; SWS_CORE_06561

≙ [variant]

访问 get get_if holds_alternative visit 15
template <std::size_t I, typename... Types> constexpr variant_alternative_t< I, Variant< Types... > > & get ( Variant< Types... > &variant) noexcept; SWS_CORE_01613
template <std::size_t I, typename... Types> constexpr variant_alternative_t< I, Variant< Types... > > && get ( Variant< Types... > &&variant) noexcept; SWS_CORE_01614
template <std::size_t I, typename... Types> constexpr const variant_alternative_t< I, Variant< Types... > > & get (const Variant< Types... > &variant) noexcept; SWS_CORE_01615
template <std::size_t I, typename... Types> constexpr const variant_alternative_t< I, Variant< Types... > > && get (const Variant< Types... > &&variant) noexcept; SWS_CORE_01616
template <typename T, typename... Types> constexpr T & get (Variant< Types... > &variant) noexcept; SWS_CORE_01617
template <typename T, typename... Types> constexpr T && get (Variant< Types... > &&variant) noexcept; SWS_CORE_01618
template <typename T, typename... Types> constexpr const T & get (const Variant< Types... > &variant) noexcept; SWS_CORE_01619
template <typename T, typename... Types> constexpr const T && get (const Variant< Types... > &&variant) noexcept; SWS_CORE_01620
template <std::size_t I, typename... Types> std::add_pointer_t< variant_alternative_t< I, Variant< Types... > > > get_if (Variant< Types... > *variant) noexcept; SWS_CORE_01621
template <std::size_t I, typename... Types> std::add_pointer_t< const variant_alternative_t< I, Variant< Types... > > > get_if (const Variant< Types... > *variant) noexcept; SWS_CORE_01622
template <typename T, typename... Types> std::add_pointer_t< T > get_if (Variant< Types... > *variant) noexcept; SWS_CORE_01623
template <typename T, typename... Types> std::add_pointer_t< const T > get_if (const Variant< Types... > *variant) noexcept; SWS_CORE_01624
template <typename T, typename... Types> constexpr bool holds_alternative (const Variant< Types... > &variant) noexcept; SWS_CORE_01626
template <typename ReturnType, typename Visitor, typename... Variants> constexpr {<invoke-result-decltype-1>} visit (Visitor &&visitor, Variants &&... variants); SWS_CORE_01633
template <typename Visitor, typename... Variants> constexpr {<invoke-result-decltype-2>} visit (Visitor &&visitor, Variants &&... variants); SWS_CORE_01634
比较 != < <= == > >= 12
template <typename... Types> constexpr bool operator!= (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01628
constexpr bool operator!= (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01642
template <typename... Types> constexpr bool operator< (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01629
constexpr bool operator< (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01643
template <typename... Types> constexpr bool operator<= (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01631
constexpr bool operator<= (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01645
template <typename... Types> constexpr bool operator== (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01627
constexpr bool operator== (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01641
template <typename... Types> constexpr bool operator> (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01630
constexpr bool operator> (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01644
template <typename... Types> constexpr bool operator>= (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01632
constexpr bool operator>= (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01646
交换 swap 1
template <typename... Types> void swap (Variant< Types... > &lhs, Variant< Types... > &rhs) noexcept(noexcept(lhs.swap(rhs))); SWS_CORE_01696

Implementation of std::pmr::monotonic_buffer_resource type from [mem.res.monotonic.buffer] ≙ std::pmr::monotonic_buffer_resource

继承自 MemoryResource

Shall implement std::nullopt_t ≙ std::nullopt_t

Implementation of std::optional type from [optional.syn] ≙ std::optional

特化 Optional< T & >

创建 make_optional 3
template <typename T> constexpr Optional< std::decay_t< T > > make_optional (T &&) noexcept(std::is_nothrow_move_constructible< T >::value); SWS_CORE_01138
template <typename T, typename... Args> constexpr Optional< T > make_optional (Args &&... args) noexcept(std::is_nothrow_constructible< T, Args... >::value); SWS_CORE_01139
template <typename T, typename U, typename... Args> constexpr Optional< T > make_optional (std::initializer_list< U > il, Args &&... args) noexcept(std::is_nothrow_constructible< T, std::initializer_list< U > &, Args &&... >::value); SWS_CORE_01140
比较 != < <= == > >= 30
template <typename T, typename U> constexpr bool operator!= (const Optional< T > &, const Optional< U > &); SWS_CORE_01143
template <typename T, typename U> constexpr bool operator!= (const Optional< T > &, const U &); SWS_CORE_01176
template <typename T, typename U> constexpr bool operator!= (const U &, const Optional< T > &); SWS_CORE_01177
template <typename T> constexpr bool operator!= (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01188
template <typename T> constexpr bool operator!= (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01189
template <typename T, typename U> constexpr bool operator< (const Optional< T > &, const Optional< U > &); SWS_CORE_01144
template <typename T, typename U> constexpr bool operator< (const Optional< T > &, const U &); SWS_CORE_01178
template <typename T, typename U> constexpr bool operator< (const U &, const Optional< T > &); SWS_CORE_01179
template <typename T> constexpr bool operator< (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01190
template <typename T> constexpr bool operator< (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01191
template <typename T, typename U> constexpr bool operator<= (const Optional< T > &, const Optional< U > &); SWS_CORE_01146
template <typename T, typename U> constexpr bool operator<= (const Optional< T > &, const U &); SWS_CORE_01180
template <typename T, typename U> constexpr bool operator<= (const U &, const Optional< T > &); SWS_CORE_01181
template <typename T> constexpr bool operator<= (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01192
template <typename T> constexpr bool operator<= (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01193
template <typename T, typename U> constexpr bool operator== (const Optional< T > &, const Optional< U > &); SWS_CORE_01142
template <typename T, typename U> constexpr bool operator== (const Optional< T > &, const U &); SWS_CORE_01148
template <typename T, typename U> constexpr bool operator== (const U &, const Optional< T > &); SWS_CORE_01149
template <typename T> constexpr bool operator== (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01186
template <typename T> constexpr bool operator== (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01187
template <typename T, typename U> constexpr bool operator> (const Optional< T > &, const Optional< U > &); SWS_CORE_01145
template <typename T, typename U> constexpr bool operator> (const Optional< T > &, const U &); SWS_CORE_01182
template <typename T, typename U> constexpr bool operator> (const U &, const Optional< T > &); SWS_CORE_01183
template <typename T> constexpr bool operator> (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01194
template <typename T> constexpr bool operator> (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01195
template <typename T, typename U> constexpr bool operator>= (const Optional< T > &, const Optional< U > &); SWS_CORE_01147
template <typename T, typename U> constexpr bool operator>= (const Optional< T > &, const U &); SWS_CORE_01184
template <typename T, typename U> constexpr bool operator>= (const U &, const Optional< T > &); SWS_CORE_01185
template <typename T> constexpr bool operator>= (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01196
template <typename T> constexpr bool operator>= (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01197
交换 swap 1
template <typename T> void swap (Optional< T > &lhs, Optional< T > &rhs) noexcept(std::is_ nothrow_move_constructible< T >::value &&std::is_nothrow_move_ assignable< T >::value); SWS_CORE_01096

Implementation of std::pmr::polymorphic_allocator from [mem.poly.allocator.class] ≙ std::pmr::polymorphic_allocator

比较 == 1
template <class T1, class T2> bool operator== (const PolymorphicAllocator< T1 > &a, const PolymorphicAllocator< T2 > &b) noexcept; SWS_CORE_06560

Implementation of std::pmr::pool_options from [mem.poly.pool_options.class] ≙ std::pmr::pool_options

ara::core specific variant of std::promise class The implementation shall flag the condition E!=ara::core::ErrorCode as a compile error. ≙ std::promise

特化 Promise< void, E >

Result 类

This class is a type that contains either a value or an error

特化 Result< T &, E > Result< void, E >

比较 != == 10
template <typename T, typename E> bool operator!= (const Result< T, E > &lhs, const Result< T, E > &rhs); SWS_CORE_00781
template <typename T, typename E> bool operator!= (const Result< T, E > &lhs, const T &rhs); SWS_CORE_00784
template <typename T, typename E> bool operator!= (const T &lhs, const Result< T, E > &rhs); SWS_CORE_00785
template <typename T, typename E> bool operator!= (const Result< T, E > &lhs, const E &rhs); SWS_CORE_00788
template <typename T, typename E> bool operator!= (const E &lhs, const Result< T, E > &rhs); SWS_CORE_00789
template <typename T, typename E> bool operator== (const Result< T, E > &lhs, const Result< T, E > &rhs); SWS_CORE_00780
template <typename T, typename E> bool operator== (const Result< T, E > &lhs, const T &rhs); SWS_CORE_00782
template <typename T, typename E> bool operator== (const T &lhs, const Result< T, E > &rhs); SWS_CORE_00783
template <typename T, typename E> bool operator== (const Result< T, E > &lhs, const E &rhs); SWS_CORE_00786
template <typename T, typename E> bool operator== (const E &lhs, const Result< T, E > &rhs); SWS_CORE_00787
交换 swap 1
template <typename T, typename E> void swap (Result< T, E > &lhs, Result< T, E > &rhs) noexcept(noexcept(lhs.Swap(rhs))); SWS_CORE_00796
Span 类

Implementation of std::span container from [views.span] ≙ std::span

创建 MakeSpan 5
template <typename T> constexpr Span< T > MakeSpan (T *ptr, typename Span< T >::size_type count) noexcept; SWS_CORE_01990
template <typename T> constexpr Span< T > MakeSpan (T *firstElem, T *lastElem) noexcept; SWS_CORE_01991
template <typename T, std::size_t N> constexpr Span< T, N > MakeSpan (T(&arr)[N]) noexcept; SWS_CORE_01992
template <typename Container> constexpr Span< typename Container::value_type > MakeSpan (Container &cont) noexcept; SWS_CORE_01993
template <typename Container> constexpr Span< typename Container::value_type const > MakeSpan (const Container &cont) noexcept; SWS_CORE_01994

This clock represents a monotonic clock

Implementation of std::basic_string_view type from [string.view] ≙ std::basic_string_view

比较 != < <= == > >= 6
constexpr bool operator!= (StringView lhs, StringView rhs) noexcept; SWS_CORE_02182
constexpr bool operator< (StringView lhs, StringView rhs) noexcept; SWS_CORE_02183
constexpr bool operator<= (StringView lhs, StringView rhs) noexcept; SWS_CORE_02185
constexpr bool operator== (StringView lhs, StringView rhs) noexcept; SWS_CORE_02181
constexpr bool operator> (StringView lhs, StringView rhs) noexcept; SWS_CORE_02184
constexpr bool operator>= (StringView lhs, StringView rhs) noexcept; SWS_CORE_02186
输入/输出 << 1

Implementation of std::pmr::synchronized_pool_resource from [mem.res.pool] ≙ std::pmr::synchronized_pool_resource

继承自 MemoryResource

Implementation of std::pmr::unsynchronized_pool_resource from [mem.res.pool] ≙ std::pmr::unsynchronized_pool_resource

继承自 MemoryResource

Implementation of std::variant type from [basic.string] ≙ std::variant

Vector 类

Implementation of std::pmr::vector container from [vector] ≙ std::pmr::vector

比较 != < <= == > >= 6
template <typename T, typename Allocator> bool operator!= (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01391
template <typename T, typename Allocator> bool operator< (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01392
template <typename T, typename Allocator> bool operator<= (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01393
template <typename T, typename Allocator> bool operator== (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01390
template <typename T, typename Allocator> bool operator> (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01394
template <typename T, typename Allocator> bool operator>= (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01395
交换 swap 1
template <typename T, typename Allocator> void swap (Vector< T, Allocator > &lhs, Vector< T, Allocator > &rhs) noexcept(noexcept(lhs.swap(rhs))); SWS_CORE_01396
Abort 函数

Abort the current operation This function will never return to its caller. The stack is not unwound: destructors of variables with automatic storage duration are not called. Calling this function is ill-formed if any of the arguments is not convertible to ara::core:: StringView.

template <typename... Args> [[noreturn]] void Abort (const Args &... args) noexcept;

A function declaration with the correct prototype for ara::core::SetAbortHandler This declaration exists only for providing a function type that includes noexcept and that acts as base type for a type alias, which is defined in [SWS_CORE_00050]. This compensates for the fact that the C++ standard (up to and including C++14) prohibits that noexcept appears in an alias-declaration. There is no implementation of this function.

void AbortHandlerPrototype () noexcept;

Add a custom Abort handler function. Implementations support at least 8 AbortHandlers. Implementation false is returned when either the implementation-defined limit for number of abort handlers

bool AddAbortHandler (AbortHandler handler) noexcept;
as_bytes 函数

≙ [views.span]

template <typename ElementType, std::size_t Extent> Span< const Byte, Extent==dynamic_extent ? dynamic_extent :sizeof(ElementType) *Extent > as_bytes (Span< ElementType, Extent > s) noexcept;

≙ [views.span]

template <typename ElementType, std::size_t Extent> Span< Byte, Extent==dynamic_extent ? dynamic_extent :sizeof(Element Type) *Extent > as_writable_bytes (Span< ElementType, Extent > s) noexcept;
data 函数 4

Return a pointer to the block of memory that contains the elements of a container.

重载 data 4
template <typename Container> constexpr auto data (Container &c) noexcept(noexcept(c.data())) -> decltype(c.data()); SWS_CORE_04110
template <typename Container> constexpr auto data (const Container &c) noexcept(noexcept(c.data())) -> decltype(c.data()); SWS_CORE_04111
template <typename T, std::size_t N> constexpr T * data (T(&array)[N]) noexcept; SWS_CORE_04112
template <typename E> constexpr const E * data (std::initializer_list< E > il) noexcept; SWS_CORE_04113

Shutdown of the ARA Framework After this call, no interaction with the ARA is allowed with the exception of types intended to be used independently of initialization as defined in [SWS_CORE_15002]. As a prerequisite to calling this API it is expected that the use of ARA interfaces has completed (with the given exceptions). It is strongly recommended to make this call in a place where it is guaranteed that the static initialization has completed and destruction of statically initialized data has not yet started.

Result< void > Deinitialize () noexcept;
empty 函数 3

Return whether the given container is empty

重载 empty 3
template <typename Container> constexpr auto empty (const Container &c) noexcept(noexcept(c.empty())) -> decltype(c.empty()); SWS_CORE_04130
template <typename T, std::size_t N> constexpr bool empty (const T(&array)[N]) noexcept; SWS_CORE_04131
template <typename E> constexpr bool empty (std::initializer_list< E > il) noexcept; SWS_CORE_04132

Return a reference to the global ara::core::CoreErrorDomain

constexpr const ErrorDomain & GetCoreErrorDomain () noexcept;

except for the following deviations: 1. Description references to std::pmr::new_delete_resource() are replaced by ara:: core::NewDeleteResource() 2. Description references to std::pmr::set_default_resource() are replaced by ara:: core::SetDefaultResource() 3. Return type std::pmr::memory_resource is replaced with ara::core:: MemoryResource ≙ std::pmr::new_delete_resource

MemoryResource * GetDefaultResource () noexcept;

Obtain the reference to the single global ara::core::FutureErrorDomain instance.

constexpr const ErrorDomain & GetFutureErrorDomain () noexcept;
Initialize 函数

Initialization of the ARA framework. Prior to this call, interaction with the ARA is not allowed with the exception of types intended to be used independently of initialization as defined in [SWS_CORE_15002]. It is strongly recommended to make this call in a place where it is guaranteed that static initialization has completed.

Result< void > Initialize (int &argc, char **argv) noexcept;

except for the following deviations: 1. Return type std::pmr::memory_resource is replaced with ara::core:: MemoryResource ≙ std::pmr::memory_resource

MemoryResource * NewDeleteResource () noexcept;

except for the following deviations: 1. Return type std::pmr::memory_resource is replaced with ara::core:: MemoryResource 2. It’s allocate() function returns nullptr instead of throwing std::bad_alloc ≙ std::pmr::memory_resource

MemoryResource * NullMemoryResource () noexcept;

Add a custom Abort handler function and return the most recently added one. By setting nullptr, the implementation may restore the default handler instead; this will remove all previously installed handlers. Implementation This function can be called from multiple threads simultaneously; these calls are performed in an

AbortHandler SetAbortHandler (AbortHandler handler) noexcept;

except for the following deviations: 1. Description references to std::pmr::new_delete_resource() are replaced by ara:: core::NewDeleteResource() 2. Description references to std::pmr::get_default_resource() are replaced by ara:: core::GetDefaultResource() 3. Return type std::pmr::memory_resource is replaced with ara::core:: MemoryResource ≙ std::pmr::new_delete_resource

MemoryResource * SetDefaultResource (MemoryResource *r) noexcept;
size 函数 2

Return the size of a container

重载 size 2
template <typename Container> constexpr auto size (const Container &c) noexcept(noexcept(c.size())) -> decltype(c.size()); SWS_CORE_04120
template <typename T, std::size_t N> constexpr std::size_t size (const T(&array)[N]) noexcept; SWS_CORE_04121
CoreErrc 枚举

Defines all errors of the ara::core Functional Cluster

enum class CoreErrc : ErrorDomain::CodeType {...};
FutureErrc 枚举

Specifies the errors that can occur upon calling Future::get() or Future::GetResult().

enum class FutureErrc : ara::core::ErrorDomain::CodeType {...};

Specifies the status of a ara::core::Future as returned by: • Future<T,E>::wait_for() • Future<void,E>::wait_for() • Future<T,E>::wait_until() • Future<void,E>::wait_until() These definitions are equivalent to the ones from std::future_status. However, no item equivalent to std::future_status::deferred is available here. Implementation The numerical values of the enum literals are implementation-defined ≙ std::future_status

enum class FutureStatus : std::uint8_t {...};
AbortHandler 类型别名

The type of a handler for ara::core::SetAbortHandler

using AbortHandler = decltype(&AbortHandlerPrototype);
Byte 类型别名

A non-integral binary type. The requirements on this type are stated in "See also:" Implementation {<byte-type>} shall be an implementation-defined type

using Byte = {<byte-type>};
String 类型别名

≙ [basic.string]

using String = BasicString<>;

≙ [variant]

using variant_alternative_t = typename variant_alternative<I, T>::type;

≙ [views.span]

constexpr std::size_t dynamic_extent = std::numeric_limits<std::size_ t>::max();
in_place 变量

The singleton instance of ara::core::in_place_t

constexpr in_place_t in_place;

The singleton instances (one for each I of ara::core::in_place_index_t

template <std::size_t Index> constexpr in_place_index_t<Index> in_place_index {};

The singleton instances (one for each T) of ara::core::in_place_type_t

template <typename T> constexpr in_place_type_t<T> in_place_type;
nullopt 变量

≙ [optional]

constexpr nullopt_t nullopt {};

≙ [variant]

template <typename T> constexpr std::size_t variant_size_v = variant_size<T>::value;

ara::core::literals::string_view_literals

≙ [string.view]

constexpr StringView operator""_SV (const char *str, std::size_t len) noexcept;

std

≙ [array]

≙ [array]

命名空间

模块的 UML 类图

Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.

G cluster_1 ara::core cluster_2 ara::core::Bitset cluster_3 ara::core::Map cluster_4 std nara__core__CoreErrorDomain113 CoreErrorDomain nara__core__ErrorDomain335 ErrorDomain nara__core__CoreErrorDomain113->nara__core__ErrorDomain335 nara__core__CoreException713 CoreException nara__core__Exception792 Exception nara__core__CoreException713->nara__core__Exception792 nextstd__exception28 std::exception nara__core__Exception792->nextstd__exception28 nara__core__FutureErrorDomain146 FutureErrorDomain nara__core__FutureErrorDomain146->nara__core__ErrorDomain335 nara__core__FutureException511 FutureException nara__core__FutureException511->nara__core__Exception792 nara__core__MemoryResource130 MemoryResource nara__core__MonotonicBufferResource118 MonotonicBufferResource nara__core__MonotonicBufferResource118->nara__core__MemoryResource130 nara__core__SynchronizedPoolResource481 SynchronizedPoolResource nara__core__SynchronizedPoolResource481->nara__core__MemoryResource130 nara__core__UnsynchronizedPoolResource176 UnsynchronizedPoolResource nara__core__UnsynchronizedPoolResource176->nara__core__MemoryResource130 nara__core__Array326 Array nara__core__BasicString716 BasicString nara__core__Bitset255 Bitset nara__core__ErrorCode330 ErrorCode nara__core__Executor877 Executor nara__core__Future930 Future nara__core__Future__void__E__740 Future< void, E > nara__core__hash88 «struct» hash nara__core__in_place_index_t938 «struct» in_place_index_t nara__core__in_place_t356 «struct» in_place_t nara__core__in_place_type_t306 «struct» in_place_type_t nara__core__InstanceSpecifier92 InstanceSpecifier nara__core__is_nothrow_swappable987 «struct» is_nothrow_swappable nara__core__Map274 Map nara__core__Monostate901 «struct» Monostate nara__core__nullopt_t64 «struct» nullopt_t nara__core__Optional627 Optional nara__core__Optional__T____62 Optional< T & > nara__core__PolymorphicAllocator970 PolymorphicAllocator nara__core__PoolOptions463 «struct» PoolOptions nara__core__Promise131 Promise nara__core__Promise__void__E__714 Promise< void, E > nara__core__Result167 Result nara__core__Result__T____E__551 Result< T &, E > nara__core__Result__void__E__788 Result< void, E > nara__core__Span436 Span nara__core__SteadyClock455 SteadyClock nara__core__StringView801 StringView nara__core__Variant465 Variant nara__core__variant_alternative370 «struct» variant_alternative nara__core__variant_alternative__I_433 «struct» variant_alternative< I, … > nara__core__variant_alternative__I__Variant__Types_______15 «struct» variant_alternative< I, Variant< Types... > > nara__core__variant_size885 «struct» variant_size nara__core__variant_size__const24 «struct» variant_size< const volatile T > nara__core__variant_size__const_T__418 «struct» variant_size< const T > nara__core__variant_size__Variant_60 «struct» variant_size< Variant< Types... > > nara__core__variant_size__volatile_T__105 «struct» variant_size< volatile T > nara__core__Vector473 Vector nara__core__Bitset__reference533 reference nara__core__Map__value_compare839 value_compare nstd__hash__ara__core__Monostate__722 «struct» hash< ara::core::Monostate > next_core__Monostate__802 :core::Monostate > nstd__hash__ara__core__Monostate__722->next_core__Monostate__802 nstd__hash__ara__core__Optional__T__781 «struct» hash< ara::core::Optional< T > next_core__Optional__T____961 :core::Optional< T > > nstd__hash__ara__core__Optional__T__781->next_core__Optional__T____961 nstd__hash__ara__core__String__667 «struct» hash< ara::core::String > next_core__String___final444 :core::String > final nstd__hash__ara__core__String__667->next_core__String___final444 nstd__hash__ara__core__StringView__122 «struct» hash< ara::core::StringView > next_core__StringView___final857 :core::StringView > final nstd__hash__ara__core__StringView__122->next_core__StringView___final857 nstd__hash__ara__core__Variant_545 «struct» hash< ara::core::Variant< next_core__Variant__Types__________________978 :core::Variant< Types...            > > nstd__hash__ara__core__Variant_545->next_core__Variant__Types__________________978 nstd__hash__ara__core__Vector__T__Allocator____942 «struct» hash< ara::core::Vector< T, Allocator > > next_core__Vector__T__Allocator_____final470 :core::Vector< T, Allocator > > final nstd__hash__ara__core__Vector__T__Allocator____942->next_core__Vector__T__Allocator_____final470 nstd__tuple_element__I__ara__core__Array__T__N____988 «struct» tuple_element< I, ara::core::Array< T, N > > next_core__Array__T__N____306 :core::Array< T, N > > nstd__tuple_element__I__ara__core__Array__T__N____988->next_core__Array__T__N____306 nstd__tuple_size__ara__core__Array__T_805 «struct» tuple_size< ara::core::Array< T, next_core__Array__T__N________________________integral__constant__size_548 :core::Array< T, N > > :                  integral_ constant< size_t, N > nstd__tuple_size__ara__core__Array__T_805->next_core__Array__T__N________________________integral__constant__size_548