Инкапсулирует опционально присутствующее значение типобезопасным образом в стековой памяти и обеспечивает доступ в зависимости от состояния.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b7fd51442c86ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Инкапсулирует опционально присутствующее значение типобезопасным образом в стековой памяти и обеспечивает доступ в зависимости от состояния.
Класс ara::core::Optional предоставляет соответствующую стандарту реализацию std::optional<T> для типобезопасной и безаллокационной инкапсуляции значений типа value_type в стеке [SWS_CORE_01102]. Приложения проверяют состояние заполненности через has_value()[SWS_CORE_01129] и обращаются к содержимому через value() или операторы. Доступа к пустым экземплярам следует строго избегать, так как, несмотря на объявление noexcept, он вызывает платформенное нарушение IsoStdBadOptionalAccessViolation[SWS_CORE_01131].
Контекст
Класс ara::core::Optional предоставляет соответствующую стандарту реализацию контейнера std::optional<T> для Adaptive Platform. Он служит типобезопасной оболочкой для инкапсуляции опционального значения типа value_type[SWS_CORE_01102]. Благодаря его использованию отпадает необходимость в подверженных ошибкам сигнальных значениях (sentinel values), специальных флагах ошибок или динамических выделениях памяти (таких как нулевые указатели) для обозначения отсутствующих данных. Хранение объекта осуществляется непосредственно в стековой памяти экземпляра, что обеспечивает детерминированное управление ресурсами и локальность кэша в среде выполнения AUTOSAR.
Жизненный цикл
Экземпляр ara::core::Optional в любой момент времени находится в одном из двух дискретных состояний: неинициализирован (пуст) или заполнен значением типа T. Исходное пустое состояние принимается посредством конструктора по умолчанию [SWS_CORE_01103] или явной инициализации с помощью nullopt_t[SWS_CORE_01104]. Инициализация конкретным значением выполняется либо через конструкторы копирования и перемещения [SWS_CORE_01105], [SWS_CORE_01106], [SWS_CORE_01109], конструкторы преобразования типов [SWS_CORE_01110], [SWS_CORE_01111], либо напрямую на месте (in-place) через in_place_t[SWS_CORE_01107], [SWS_CORE_01108], за счет чего полностью исключаются временные копии.
В процессе работы состояние может меняться многократно: методы emplace конструируют новое значение непосредственно в памяти объекта и сбрасывают возможно существовавшее ранее состояние [SWS_CORE_01119], [SWS_CORE_01120]. Аналогично операторы присваивания, строго привязанные к lvalue через ref-квалификаторы &, приводят к заполненному состоянию [SWS_CORE_01114], [SWS_CORE_01115], [SWS_CORE_01116], [SWS_CORE_01117], [SWS_CORE_01118]. Сброс в пустое состояние выполняется детерминированно через reset()[SWS_CORE_01136] или путем присваивания nullopt_t[SWS_CORE_01113]. Кроме того, два экземпляра могут эффективно обмениваться своими состояниями и данными с помощью swap[SWS_CORE_01121]. По достижении конца времени жизни деструктор уничтожает возможно содержащийся объект; при этом его гарантия noexcept напрямую связана с возможностью уничтожения типа T[SWS_CORE_01112].
Штатная процедура включает проверку заполненности и последующее считывание значения. Для запроса состояния доступны has_value()[SWS_CORE_01129] и явный оператор преобразования operator bool[SWS_CORE_01128].
Ошибочный доступ имеет место тогда, когда пустой экземпляр разыменовывается или неправомерно запрашивается его значение. Методы доступа value(), operator* и operator-> в AUTOSAR Adaptive объявлены как noexcept, однако в пустом состоянии вызывают нарушение IsoStdBadOptionalAccessViolation ([SWS_CORE_01122], [SWS_CORE_01123], [SWS_CORE_01124], [SWS_CORE_01125], [SWS_CORE_01126], [SWS_CORE_01127], [SWS_CORE_01130], [SWS_CORE_01131], [SWS_CORE_01132], [SWS_CORE_01133]). Интерпретация: поскольку методы объявлены как noexcept, вызов IsoStdBadOptionalAccessViolation, вероятно, не распространяется как перехватываемое стандартное исключение, а приводит, предположительно, к немедленному аварийному завершению программы через платформозависимый механизм нарушений. Вопрос Q-3c066dae2b93a9ec (открытый) Поэтому вызывающие стороны в обязательном порядке должны валидировать статус заполненности перед считыванием.
Еще один сценарий ошибок касается обработки исключений при конструировании типов: конструкторы, операторы присваивания, swap и emplace имеют условные спецификации noexcept, зависящие от того, объявлены ли соответствующие операции типа T сами как noexcept ([SWS_CORE_01105], [SWS_CORE_01114], [SWS_CORE_01119], [SWS_CORE_01121]). Резервный метод value_or, кроме того, явно обозначен как небезопасный относительно исключений («not exception safe») ([SWS_CORE_01134], [SWS_CORE_01135]), поэтому ошибки, возникающие при создании возвращаемого значения, передаются вызывающей стороне.
Настоящее руководство по классу основано исключительно на требованиях спецификации ara::core::Optional из AUTOSAR Adaptive R25-11.
except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition) ≙ [optional]
Перегрузкиvalue4
constexpr const T & value () const & noexcept;SWS_CORE_01130
except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition) ≙ [optional]
Перегрузки*4
constexpr const T & operator* () const & noexcept;SWS_CORE_01124
except for the following deviations: 1. The function is noexcept 2. Function is not constexpr 3. A IsoStdBadOptionalAccessViolation may be raised (see condition) ≙ [optional]
template <typename U = T> {<cond-explicit-1>} constexpr Optional (U &&) noexcept(std::is_ nothrow_constructible< T, U >::value);
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a319ba530534ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Функция-конструктор [SWS_CORE_01109] класса ara::core::Optional предоставляется через заголовок #include "ara/core/optional.h". Будучи шаблонным конструктором с сигнатурой template <typename U = T> constexpr Optional(U&&), она служит для прямой инициализации опционального значения с пересылкой аргумента типа U&& в содержащийся тип значения T ([SWS_CORE_01102]). Семантика следует определению в [optional], однако отличается явным условием отсутствия исключений: функция специфицирована как noexcept тогда и только тогда, когда выполнено std::is_nothrow_constructible<T, U>::value ([SWS_CORE_01109]).
Обработка ошибок и безопасность исключений
Что касается безопасности относительно исключений, вызов классифицирован как conditionally exception safe ([SWS_CORE_01109]). Специфические коды ошибок AUTOSAR, а также каналы оповещения через DET или DEM для этого конструктора отсутствуют; если конструирование целевого типа T завершается сбоем, соответствующее исключение этого типа передается дальше.
Взаимодействие и параллелизм
Функция располагается наряду с конструктором по умолчанию [SWS_CORE_01103] и нулевым конструктором [SWS_CORE_01104], создающими пустые экземпляры, а также конструкторами копирования и перемещения [SWS_CORE_01105] и [SWS_CORE_01106]. Кроме того, ara::core::Optional служит носителем для опциональных возвращаемых значений при обработке ошибок ara::core::Result, например при получении значений через Ok() ([SWS_CORE_00770]) или ошибок через Err() ([SWS_CORE_00772]). Интерпретация: ввиду отсутствия явных гарантий потокобезопасности в [SWS_CORE_01109] параллельный вызов конструктора, вероятно, безопасен только в том случае, если исходный объект U защищен от одновременных модификаций. Вопрос Q-edf541fe968f3afe (открытый)
Это указание по использованию было создано автоматически. Определяющей является спецификация AUTOSAR.
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: dd45cef6ee33ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Преобразующий конструктор копирования ara::core::Optional доступен через заголовочный файл #include "ara/core/optional.h"[SWS_CORE_01110]. Он служит для синхронного создания Optional<T> из существующего экземпляра const Optional<U>&. Пометка в спецификации {<cond-explicit-2>}, вероятно, означает, что конструктор объявлен как explicit, если T не может быть неявно создан из const U&. Вопрос Q-4a4adc2b59d1fa53 (открытый)
Обработка ошибок и безопасность исключений
Для этого конструктора не существует специфических кодов ошибок, сообщений DET или DEM. Функция классифицирована как условно безопасная относительно исключений (conditionally exception safe) [SWS_CORE_01110]. Гарантия noexcept действует через noexcept(std::is_nothrow_constructible<T, const U&>::value) исключительно тогда, когда целевой тип T может быть сконструирован из const U& без исключений [SWS_CORE_01110]. Если создание целевого значения завершается сбоем, исключения распространяются без изменений.
Параллелизм и ограничения
В отличие от других функций, таких как Ok()[SWS_CORE_00770], спецификация не указывает потокобезопасность для этого конструктора. Он, вероятно, реентерабелен, однако параллельный доступ на чтение или запись к исходному объекту Optional<U> требует внешней синхронизации. Вопрос Q-a0534498f685f575 (открытый)
Взаимодействие
Конструктор дополняет другие функции инициализации ara::core::Optional, среди которых конструкторы по умолчанию, нулевой конструктор и конструкторы копирования ([SWS_CORE_01103], [SWS_CORE_01104], [SWS_CORE_01105], [SWS_CORE_01106]), а также операция swap [SWS_CORE_01096]. Кроме того, данный тип тесно взаимодействует с ara::core::Result, чьи методы Ok() и Err() предоставляют значения или ошибки в виде Optional ([SWS_CORE_00770], [SWS_CORE_00772]).
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 5e86b0752dceПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Шаблонная функция [SWS_CORE_01111] предоставляет преобразующий конструктор перемещения класса ara::core::Optional из заголовочного файла #include "ara/core/optional.h". Он принимает rvalue-ссылку Optional<U>&& для инициализации экземпляра Optional<T> и следует поведению [optional] с задокументированным отличием в виде условной спецификации noexcept[SWS_CORE_01111]. Пункт спецификации {<cond-explicit-3>} в качестве интерпретации, вероятно, управляет тем, выполняется ли преобразование неявно или явно в зависимости от свойств типов T и U. Вопрос Q-0b21a6eafb9414d8 (открытый)
В отношении обработки ошибок и исключений конструктор классифицирован как условно безопасный относительно исключений (conditionally exception safe) [SWS_CORE_01111]. Выполнение является noexcept тогда и только тогда, когда выполнено std::is_nothrow_constructible<T, U>::value[SWS_CORE_01111]. В противном случае во время конструирования содержащегося значения могут возникнуть исключения, которые будут переданы вызывающему коду.
Внутри ara::core::Optional эта функция дополняет обычный конструктор перемещения [SWS_CORE_01106], конструктор копирования [SWS_CORE_01105], а также конструктор по умолчанию [SWS_CORE_01103]. Кроме того, элемент тесно взаимодействует с ara::core::Result, чьи методы Ok() и Err() возвращают содержащиеся значения или ошибки как ara::core::Optional (как в [SWS_CORE_00770], [SWS_CORE_00771] и [SWS_CORE_00772]), а также со вспомогательной функцией swap[SWS_CORE_01096].
Это указание по использованию было сгенерировано автоматически на основе данных спецификации.
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 4b99ff09898eПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член emplace класса ara::core::Optional служит для создания содержащегося значения типа T непосредственно в памяти опционального объекта [SWS_CORE_01119]. Вызов выполняется синхронно через заголовочный файл ara/core/optional.h. В качестве параметров функция принимает переменный пакет аргументов Args&&... и перенаправляет его в конструктор типа T; возвращается lvalue-ссылка на вновь созданное значение (T&) [SWS_CORE_01119].
Что касается обработки исключений, функция классифицируется как условно безопасная относительно исключений (conditionally exception safe) и имеет условную спецификацию noexcept на основе std::is_nothrow_constructible<T, Args&&...>::value[SWS_CORE_01119]. Если конструирование T вызывает исключение, действует безопасность относительно исключений базового типа; гарантия noexcept применима исключительно тогда, когда гарантируется, что конструирование не выбрасывает исключений. Специфические коды ошибок, события DEM или сообщения DET в спецификации не предусмотрены [SWS_CORE_01119].
Относительно параллелизма спецификация умалчивает; интерпретация: одновременный доступ на запись нескольких потоков к одному и тому же экземпляру ara::core::Optional без внешней синхронизации, вероятно, не является потокобезопасным. Вопрос Q-c11efb3f95001493 (открытый) Кроме того, ранее присутствовавшее значение, предположительно, уничтожается при реинициализации.
При взаимодействии внутри ara::core::Optional существуют альтернативные перегрузки: для списков инициализации доступен вариант с std::initializer_list[SWS_CORE_01120], тогда как для ссылочных типов ara::core::Optional<T&> определена специальная перегрузка [SWS_CORE_01164]. Аналогичные механизмы emplace для конструирования на месте (in-place) существуют в модуле core также для контейнеров, таких как ara::core::Vector[SWS_CORE_01366], ara::core::Map[SWS_CORE_01458] и ara::core::Variant[SWS_CORE_01661], [SWS_CORE_01662], [SWS_CORE_01663], [SWS_CORE_01664].
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a5f272ff8d2cПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член emplace из [SWS_CORE_01120] служит для инициализации содержащегося значения объекта типа ara::core::Optional непосредственно на месте (in-place). Она принимает std::initializer_list<U>, а также опциональные аргументы Args&&... и возвращает ссылку T& на вновь созданное значение.
Что касается обработки ошибок и безопасности относительно исключений, функция специфицирована как условно безопасная относительно исключений (conditionally exception safe). Условие noexcept согласно [SWS_CORE_01120] точно зависит от того, может ли целевой тип T быть сконструирован без исключений с использованием std::initializer_list<U>& и пересылаемых аргументов (std::is_nothrow_constructible). Это представляет собой явное отклонение от поведения в стандартном [optional].
В комплексе базовых компонентов эта перегрузка дополняет обобщенное конструирование на месте без списка инициализации из [SWS_CORE_01119]. Для специализаций ссылок, кроме того, существует присваивание через [SWS_CORE_01164]. Интерпретация: как принято для стандартного аналога в [optional], при наличии предыдущего значения оно, вероятно, уничтожается перед новым конструированием. Вопрос Q-b8a9274e43f0a0a9 (открытый)
Это указание по использованию было сгенерировано автоматически и основано на требованиях спецификации.
constexpr const T & operator* () const & noexcept;
As per corresponding usage in [optional] except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition)
As per corresponding usage in [optional] except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition)
As per corresponding usage in [optional] except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition)
constexpr const T && operator* () const &&noexcept;
As per corresponding usage in [optional] except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition)
As per corresponding usage in [optional] except for the following deviations: 1. The function is noexcept 2. Function is not constexpr 3. A IsoStdBadOptionalAccessViolation may be raised (see condition)
As per corresponding usage in [optional] except for the following deviations: 1. The function is noexcept 2. Function is not constexpr 3. A IsoStdBadOptionalAccessViolation may be raised (see condition)
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept 2. Function is declared with the ref-qualifier &
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept 2. Function is declared with the ref-qualifier &
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept 2. Function is declared with the ref-qualifier &
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept 2. Function is declared with the ref-qualifier &
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e8663f9a82eeПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член reset класса ara::core::Optional предоставляется через заголовочный файл #include "ara/core/optional.h" и служит для сброса экземпляра [SWS_CORE_01136]. Функция имеет сигнатуру void reset () noexcept;, не принимает параметров и не возвращает значения [SWS_CORE_01136]. Ее поведение следует корреспондирующему использованию в [optional][SWS_CORE_01136]; интерпретация: на основе этой ссылки вызов, вероятно, должен уничтожить возможно присутствующее значение состояния и перевести экземпляр в незанятое состояние. Вопрос Q-c819444ae1a7df1f (открытый)
В отношении обработки ошибок и исключений reset объявлена как безопасная относительно исключений (exception safe), а также с идентификатором noexcept[SWS_CORE_01136]. Не генерируются исключения и не возвращаются коды ошибок [SWS_CORE_01136].
Во взаимодействии с другими компонентами библиотеки Core актуальны следующие связи:
Для опциональных ссылок ara::core::Optional<T&> доступна специфицированная как constexpr перегрузка reset, которая также является noexcept и безопасной относительно исключений [SWS_CORE_01165].
В отличие от Optional, тип ara::core::Bitset в заголовочном файле ara/core/bitset.h также предлагает функции reset: вариант без параметров, который ссылается на модифицированный битсет [SWS_CORE_01727], а также позиционную перегрузку с возвращаемым значением Result и проверкой на IsoStdOutOfRangeViolation[SWS_CORE_01728].
Этот текст был сгенерирован автоматически. Все сведения опираются на объем спецификации AUTOSAR Adaptive R25-11.
As per corresponding usage in [optional] except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition)
As per corresponding usage in [optional] except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition)
As per corresponding usage in [optional] except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition)
As per corresponding usage in [optional] except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition)
template <typename U> constexpr T value_or (U &&) const &;
As per corresponding usage in [optional]
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 4420db92e204Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Шаблонная функция-член value_or класса ara::core::Optional согласно [SWS_CORE_01134] служит для синхронного получения содержащегося значения или предоставленного резервного значения. Она подключается через заголовочный файл #include "ara/core/optional.h" и объявлена с сигнатурой template <typename U> constexpr T value_or (U &&) const &; как константный метод для lvalue-ссылки. Поведение ориентируется на соответствующее определение std::optional («As per corresponding usage in [optional]»), в силу чего при установленном содержимом возвращается значение T, а в противном случае — переданное значение по умолчанию.
Обработка ошибок и безопасность исключений
В отношении обработки ошибок функция согласно [SWS_CORE_01134] явно специфицирована как небезопасная относительно исключений («not exception safe»). Коды ошибок, сообщения DET или DEM для этого вызова не предусмотрены. Исключения, сгенерированные при операциях преобразования или копирования, могут, таким образом, распространяться наружу.
Взаимодействие
В рамках ara::core::Optional существуют комплементарные перегрузки value_or:
[SWS_CORE_01135] предоставляет перегрузку для rvalue template <typename U> constexpr T value_or (U &&) &&;, которая также объявлена как небезопасная относительно исключений («not exception safe») и обеспечивает оптимизированное перемещение для временных объектов.
[SWS_CORE_01175] специфицирует перегрузку для специализации ara::core::Optional<T&> с сигнатурой template <typename U> constexpr T value_or (U &&u) const noexcept;, которая, в отличие от [SWS_CORE_01134], помечена как безопасная относительно исключений («exception safe»).
Данное указание по использованию было сгенерировано автоматически и основано исключительно на данных спецификации AUTOSAR Release R25-11.
template <typename U> constexpr T value_or (U &&) &&;
As per corresponding usage in [optional]
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 1f9eb2809808ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Квалифицированная для rvalue функция-член value_or шаблонного класса ara::core::Optional предоставляется через заголовочный файл ara/core/optional.h[SWS_CORE_01135]. В соответствии со ссылкой на [optional] она служит для синхронного запроса содержащегося значения или возврата переданного резервного значения. Поскольку этот вызов привязан к rvalue-ссылкам, содержащееся значение, вероятно, передаётся по семантике перемещения при наличии значения; в противном случае вычисляется и преобразуется переданный аргумент. Вопрос Q-e20f155d58dd0d72 (открытый)
Взаимодействие и перегрузки
Функция дополняет const-lvalue-перегрузку [SWS_CORE_01134], которая предлагает тот же механизм резервного значения для долгоживущих или невременных экземпляров. Для специализаций на ссылках ara::core::Optional<T &> в качестве исключения существует сигнатура [SWS_CORE_01175], объявленная как noexcept, тогда как общая перегрузка предназначена для rvalue типов значений.
Обработка ошибок и безопасность исключений
Метод явно объявлен как not exception safe[SWS_CORE_01135]. Специфические коды ошибок, сообщения DET или DEM отсутствуют. Интерпретация: потенциальные исключения, вероятно, происходят в первую очередь из конструкторов перемещения или операторов преобразования участвующих типов T и U, если при формировании возвращаемого значения возникают ошибки. Вопрос (открытый)
Этот текст был создан ИИ и основан исключительно на спецификациях релиза R25-11.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал