template <typename T, typename E = ErrorCode> class Result final {...};
This class is a type that contains either a value or an error. The implementation shall flag the condition E != ara::core::ErrorCode as a compile error.
Инкапсулирует либо значение успешного завершения, либо значение ошибки для синхронной передачи результата без исключений.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 33e53dcae988ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Инкапсулирует либо значение успешного завершения, либо значение ошибки для синхронной передачи результата без исключений.
Класс представляет собой типобезопасный контейнер, который принимает либо полезное значение, либо код ошибки для синхронной передачи результатов вычислений без исключений C++ [SWS_CORE_00751]. Вызывающие стороны создают экземпляры через выделенные конструкторы или фабричные функции, а затем оценивают результат в зависимости от состояния с помощью функций проверки и доступа, таких как доступ к значению или ошибке. Важным граничным условием является то, что базовый тип ошибки должен строго соответствовать стандартному коду ошибки, поскольку иные типы отклоняются на этапе компиляции. Кроме того, функции для вызова исключений требуют среды компилятора с включенными исключениями C++ [SWS_CORE_00766].
Контекст
Класс ara::core::Result является центральной конструкцией AUTOSAR Adaptive Platform для синхронного типизированного возврата результатов операций без обязательного использования исключений C++. Он представляет собой размеченное объединение (Tagged Union), которое в любой момент времени содержит либо полезное значение типа value_type (T), либо ошибку типа error_type (E) [SWS_CORE_00711][SWS_CORE_00712]. По умолчанию ara::core::ErrorCode выступает в качестве типа для E; иные определения ошибок пресекаются реализациями еще на этапе трансляции посредством ошибки компиляции.
В архитектуре приложения ara::core::Result выступает посредником между вызываемыми службами и потребителями. Службы инстанцируют объект для возврата статуса, в то время как потребители инициируют дальнейшую обработку через проверки состояния, такие как [SWS_CORE_00751], или функциональные цепочки вызовов, такие как [SWS_CORE_00768]. Кроме того, состояние может быть преобразовано через [SWS_CORE_00770] (Ok) и [SWS_CORE_00772] (Err) в ara::core::Optional.
ara::core::Result монопольно владеет содержащимися данными и управляет их временем жизни. Он поддерживает полную семантику значений через конструкторы копирования и перемещения ([SWS_CORE_00725], [SWS_CORE_00726]), а также соответствующие операторы присваивания ([SWS_CORE_00741], [SWS_CORE_00742]). Изменение содержимого существующих экземпляров возможно с помощью Swap[SWS_CORE_00745] или путем перезаписи in-place через EmplaceValue[SWS_CORE_00743] либо EmplaceError[SWS_CORE_00744].
Деструктор освобождает активный элемент и считается тривиально уничтожаемым, если как T, так и E являются тривиально уничтожаемыми [SWS_CORE_00727]. Что касается параллелизма, операции исключительно для чтения потокобезопасны, тогда как модифицирующие операции, такие как EmplaceValue, EmplaceError, перемещающие присваивания или Swap, не являются потокобезопасными и требуют внешней синхронизации.
Проверка состояния: вызывающая сторона проверяет с помощью HasValue()[SWS_CORE_00751] или явного оператора преобразования operator bool()[SWS_CORE_00752], присутствует ли значение. Последний отключен, если T сам имеет тип bool.
Функциональная трансформация: альтернативно Bind()[SWS_CORE_00768] позволяет выполнять монадическую дальнейшую обработку: переданный вызываемый объект (callable) выполняется только в том случае, если содержится полезное значение; существующая ошибка передается без изменений в новый экземпляр Result. Резервные варианты (fallbacks) можно реализовать с помощью Resolve()[SWS_CORE_00767].
Доступ к неактивным состояниям нарушает предусловия класса:
Вызов Value(), operator* или operator-> без содержащегося значения инициирует документированное системное нарушение ResultWithNoValueViolation ([SWS_CORE_00755], [SWS_CORE_00753], [SWS_CORE_00754]).
Вызов Error() при наличии полезного значения приводит к нарушению ResultWithNoErrorViolation ([SWS_CORE_00757], [SWS_CORE_00776]).
Интерпретация: возникновение такого нарушения предусловия в средах выполнения, как правило, приводит к немедленному аварийному завершению процесса, поскольку стандарт классифицирует эти состояния как серьезные ошибки программирования. Вопрос Q-15376f67084c4be6 (открытый) Во избежание жестких аварийных завершений можно использовать защитные методы: ValueOr() ([SWS_CORE_00761], [SWS_CORE_00762]) и ErrorOr() ([SWS_CORE_00763], [SWS_CORE_00764]) возвращают заданное значение по умолчанию при отсутствии элемента. Варианты optional, такие как Ok() ([SWS_CORE_00770], [SWS_CORE_00771]) и Err() ([SWS_CORE_00772], [SWS_CORE_00773]), инкапсулируют доступ без исключений.
Если требуется обработка исключений, ValueOrThrow() ([SWS_CORE_00766], [SWS_CORE_00769], [SWS_CORE_00778]) в случае ошибки генерирует исключение C++, связанное с этой ошибкой. Если исключения C++ отключены в компиляторе, ValueOrThrow() исключается из разрешения перегрузок [SWS_CORE_00766]; неконстантная перегрузка lvalue для operator* в этом случае также отключена [SWS_CORE_00774].
Данное руководство сгенерировано ассистентом курации ИИ на основе требований спецификации AUTOSAR Adaptive R25-11.
Return the contained value or the given default value. If *this contains a value, it is returned. Otherwise, the specified default value is returned, static_cast’d to T
Return the contained error or the given default error. If *this contains an error, it is returned. Otherwise, the specified default error is returned, static_cast’d to E
Apply the given Callable to the value of this instance, and return a new ara::core:: Result with the result of the call.
The Callable is expected to be compatible to one of these two interfaces: • Result<XXX, E> f(const T&); • <ARTechTerm{XXX f(const T&);}> • <ARNewline{}> • <ARNewline{}> • <ARTechTerm{Callable}> • Result<XXX> or a XXX directly, where XXX can be any type that is suitable for use by ara::core::Result.
The return type of this function is decltype(f(Value())) for a template argument F that returns a ara::core::Result type, and it is Result<decltype(f(Value())), E> for a template argument F that does not return a ara::core::Result type.
If this instance does not contain a value, a new Result<XXX, E> is still created and returned, with the original error contents of this instance being copied into the new instance.}>}
Return the contained error or the given default error. If *this contains an error, it is returned. Otherwise, the specified default error is returned, static_cast’d to E
Return the contained error or the given default error. If *this contains an error, it is std:: move’d into the return value. Otherwise, the specified default error is returned, static_cast’d to E
Build a new ara::core::Result from an error that is constructed in-place from the given arguments. This function shall not participate in overload resolution unless: • std::is_constructible<E, Args&&...>::value == true and • the first type of the expanded parameter pack is not E and • the first type of the expanded parameter pack is not a specialization of ara::core::Result
Build a new ara::core::Result from a value that is constructed in-place from the given arguments. This function shall not participate in overload resolution unless: • std::is_constructible<T, Args&&...>::value == true and • the first type of the expanded parameter pack is not T and • the first type of the expanded parameter pack is not a specialization of ara::core::Result
Return the contained value or return the result of a function call.
If *this contains a value, it is returned. Otherwise, the specified callable is invoked and its return value which is to be compatible to type T is returned from this function.
The Callable is expected to be compatible to this interface: T f(const E&);
Return the contained value or the given default value. If *this contains a value, it is returned. Otherwise, the specified default value is returned, static_cast’d to T
Return the contained value or the given default value. If *this contains a value, it is returned. Otherwise, the specified default value is returned, static_cast’d to T
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 38c9cb36d652ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и вызов
Синхронная функция-член ValueOrThrow класса ara::core::Result ([SWS_CORE_00766]) подключается через заголовочный файл ara/core/result.h ([SWS_CORE_00766]). Она вызывается без параметров на константном lvalue-экземпляре и возвращает константную ссылку (const T &) на сохраненное в объекте значение ([SWS_CORE_00766]).
Обработка ошибок и поведение относительно исключений
Если экземпляр Result содержит не значение, а состояние ошибки, функция выбрасывает связанное с ошибкой исключение C++ ([SWS_CORE_00766]). Спецификация классифицирует функцию как небезопасную относительно исключений (not exception safe) ([SWS_CORE_00766]); интерпретация: эта классификация, вероятно, обусловлена тем, что в случае ошибки исключение генерируется штатным образом. Вопрос Q-0f4ebba70af6e48c (открытый)
Параллелизм и ограничения
Операция специфицирована как потокобезопасная (thread-safe) ([SWS_CORE_00766]). В качестве важного граничного условия действует следующее: если исключения C++ отключены в тулчейне компилятора, эта функция не участвует в разрешении перегрузки (overload resolution) ([SWS_CORE_00766]).
Взаимодействие во фреймворке Result
Функция дополняет родственные перегрузки и специализации внутри ara::core::Result:
Для изменяемых lvalue существует вариант с возвратом T & ([SWS_CORE_00778]).
Для rvalue-экземпляров доступна move-перегрузка с возвратом T && ([SWS_CORE_00769]).
Для результатов void существует специализация ara::core::Result<void, E> без возвращаемого значения ([SWS_CORE_00866]).
Для ссылочных типов ara::core::Result<T &, E> доступны соответствующие константные и неконстантные ссылочные перегрузки ([SWS_CORE_00938], [SWS_CORE_00949]).
Данное указание по использованию было сформировано автоматически и служит в качестве ориентира. Обязательную силу имеют исключительно спецификации AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I1)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: bf00696cade5Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член ValueOrThrow() && предоставляется через заголовочный файл #include "ara/core/result.h" и служит для синхронного доступа к значению, инкапсулированному в экземпляре ara::core::Result ([SWS_CORE_00769]). Благодаря квалификации rvalue (&&) функция вызывается на rvalue-объектах и возвращает rvalue-ссылку (T &&) на содержащееся значение [SWS_CORE_00769].
Обработка ошибок и граничные условия
Если объект Result содержит значение ошибки, метод генерирует тип исключения, связанный с этой ошибкой ([SWS_CORE_00769]). Спецификация классифицирует выполнение как не являющееся исключениебезопасным (not exception safe), однако явно определяет его как потокобезопасное (thread-safe) [SWS_CORE_00769]. Обязательное требование касается инструментария сборки: если исключения C++ отключены в компиляторе, функция ни в коем случае не должна участвовать в разрешении перегрузок [SWS_CORE_00769].
Взаимодействие в наборе перегрузок
Метод [SWS_CORE_00769] является частью согласованного ансамбля перегрузок для ValueOrThrow внутри ara::core::Result:
Для lvalues доступны константная перегрузка [SWS_CORE_00766] (возврат: const T &) и неконстантный вариант [SWS_CORE_00778] (возврат: T &).
Для результатов void специализация ara::core::Result<void, E> предлагает функцию [SWS_CORE_00866] без возвращаемого значения.
Для ссылочных типов ara::core::Result<T &, E> с [SWS_CORE_00938] (константный) и [SWS_CORE_00949] (неконстантный) охватывает соответствующий возврат по ссылке.
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Return a reference to the contained value or throw an exception.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: ddfa99362222ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Функция-член ValueOrThrow[SWS_CORE_00778] класса ara::core::Result (заголовочный файл #include "ara/core/result.h") обеспечивает синхронный доступ к содержащемуся значению. Поскольку сигнатура функции снабжена квалификатором ref &, она может вызываться исключительно на неконстантных экземплярах lvalue. Она не ожидает входных параметров и возвращает модифицируемую ссылку (T&) на инкапсулированное значение.
Обработка ошибок и граничные условия
Если объект не содержит значения, а содержит ошибку, ValueOrThrow синхронно генерирует исключение, сопоставленное этой ошибке (noexcept(false)) [SWS_CORE_00778]. Функция специфицирована как not exception safe[SWS_CORE_00778]; интерпретация: это, вероятно, означает, что при возникновении ошибки поток управления прерывается генерацией исключения и никаких дополнительных гарантий восстановления или отката не предоставляется. Вопрос Q-11aed84264f3411f (открытый) Если исключения C++ отключены в тулчейне компилятора, функция обязательно не участвует в разрешении перегрузок [SWS_CORE_00778]. В отношении параллелизма выполнение обозначено как thread-safe [SWS_CORE_00778].
Взаимодействие
Функция входит в семейство перегрузок для доступа к значению в ara::core::Result:
Для константных экземпляров доступна перегрузка с возвратом const T&[SWS_CORE_00766].
Для rvalue-объектов существует вариант с семантикой перемещения, возвращающий T&&[SWS_CORE_00769].
Для специализаций со ссылочными типами (Result<T&, E>) доступны соответствующие перегрузки для модифицируемых ссылок [SWS_CORE_00949], а также константных ссылок [SWS_CORE_00938].
Для экземпляров без значения (Result<void, E>) метод лишь проверяет наличие ошибки и при необходимости генерирует исключение [SWS_CORE_00866].
Этот текст был сгенерирован системой ИИ и основан на спецификации AUTOSAR Adaptive Release R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал