Encapsula um valor opcionalmente presente de forma segura quanto aos tipos na memória de pilha (stack) e permite o acesso dependente do estado.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: b7fd51442c86ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Encapsula um valor opcionalmente presente de forma segura quanto aos tipos na memória de pilha (stack) e permite o acesso dependente do estado.
A classe ara::core::Optional disponibiliza uma implementação de std::optional<T> em conformidade com as normas, para encapsular valores do tipo value_type de forma segura quanto aos tipos e sem alocações na pilha [SWS_CORE_01102]. As aplicações verificam o estado de ocupação através de has_value()[SWS_CORE_01129] e acedem ao conteúdo através de value() ou de operadores. O acesso a instâncias vazias deve ser rigorosamente evitado, dado que, apesar da declaração noexcept, aciona a violação de plataforma IsoStdBadOptionalAccessViolation[SWS_CORE_01131].
Contexto
A classe ara::core::Optional disponibiliza uma implementação em conformidade com as normas do contentor std::optional<T> para a Adaptive Platform. Serve como invólucro seguro quanto aos tipos para encapsular um valor opcional do tipo value_type[SWS_CORE_01102]. O seu emprego elimina a necessidade de valores sentinela propensos a erros, flags de erro especiais ou alocações dinâmicas de memória (como ponteiros nulos) para sinalizar dados ausentes. O armazenamento do objeto ocorre diretamente na memória de pilha da instância, o que garante uma gestão determinística de recursos e a localidade de cache no ambiente de execução AUTOSAR.
Ciclo de vida
Uma instância de ara::core::Optional encontra-se a qualquer momento num de dois estados discretos: não inicializada (vazia) ou preenchida com um valor do tipo T. O estado inicial vazio é assumido através do construtor padrão [SWS_CORE_01103] ou da inicialização explícita com nullopt_t[SWS_CORE_01104]. A inicialização com um valor concreto ocorre através de construtores de cópia e de movimento [SWS_CORE_01105], [SWS_CORE_01106], [SWS_CORE_01109], construtores de conversão de tipo [SWS_CORE_01110], [SWS_CORE_01111] ou diretamente in-place através de in_place_t[SWS_CORE_01107], [SWS_CORE_01108], evitando-se completamente cópias temporárias.
Durante a operação, o estado pode mudar várias vezes: os métodos emplace constroem um novo valor diretamente na memória do objeto e descartam qualquer estado previamente existente [SWS_CORE_01119], [SWS_CORE_01120]. Do mesmo modo, os operadores de atribuição, que estão estritamente vinculados a lvalues através de ref-qualifiers &, conduzem ao estado preenchido [SWS_CORE_01114], [SWS_CORE_01115], [SWS_CORE_01116], [SWS_CORE_01117], [SWS_CORE_01118]. A reposição para o estado vazio é efetuada deterministicamente através de reset()[SWS_CORE_01136] ou pela atribuição de nullopt_t[SWS_CORE_01113]. Além disso, duas instâncias podem trocar eficientemente os seus estados e conteúdos de dados através de swap[SWS_CORE_01121]. Ao atingir o fim de vida, o destruidor destrói o objeto eventualmente contido; a sua garantia noexcept está diretamente associada à capacidade de destruição do tipo T[SWS_CORE_01112].
O fluxo regular compreende a verificação do preenchimento e a subsequente leitura do valor. Para a consulta de estado, estão disponíveis has_value()[SWS_CORE_01129] e o operador de conversão explícito operator bool[SWS_CORE_01128].
Ocorre um acesso erróneo quando uma instância vazia é desreferenciada ou o seu valor é solicitado indevidamente. Os métodos de acesso value(), operator* e operator-> estão declarados na AUTOSAR Adaptive como noexcept, mas acionam a violação IsoStdBadOptionalAccessViolation no estado vazio ([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]). Interpretação: uma vez que os métodos estão declarados como noexcept, o acionamento de IsoStdBadOptionalAccessViolation presumivelmente não é propagado como uma exceção padrão capturável, mas conduz provavelmente à interrupção imediata do programa através do mecanismo de violação específico da plataforma. Pergunta Q-3c066dae2b93a9ec (aberta) Por conseguinte, os chamadores têm obrigatoriamente de validar o estado de preenchimento antes da leitura.
Outro cenário de erro diz respeito ao tratamento de exceções na construção de tipos: construtores, operadores de atribuição, swap e emplace possuem especificações condicionais noexcept, que dependem do facto de as operações de tipo correspondentes de T estarem elas próprias declaradas como noexcept ([SWS_CORE_01105], [SWS_CORE_01114], [SWS_CORE_01119], [SWS_CORE_01121]). O método de fallback value_or está também explicitamente indicado como não seguro contra exceções ("not exception safe") ([SWS_CORE_01134], [SWS_CORE_01135]), pelo que eventuais erros ocorridos durante a criação do valor de retorno são reencaminhados para o chamador.
Este guia de classe baseia-se exclusivamente nos requisitos da especificação ara::core::Optional da AUTOSAR Adaptive R25-11.
except for the following deviations: 1. The function is noexcept 2. A IsoStdBadOptionalAccessViolation may conditionally be raised (see condition) ≙ [optional]
Sobrecargasvalue4
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]
Sobrecargas*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
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: a319ba530534ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
A função construtora [SWS_CORE_01109] da classe ara::core::Optional é disponibilizada através do cabeçalho #include "ara/core/optional.h". Como construtor de template com a assinatura template <typename U = T> constexpr Optional(U&&), ela serve para a inicialização direta de um valor opcional com encaminhamento do argumento do tipo U&& para o tipo de valor contido T ([SWS_CORE_01102]). A semântica segue a definição em [optional], divergindo, contudo, por uma condição explícita para a isenção de exceções: a função é especificada como noexcept se, e somente se, std::is_nothrow_constructible<T, U>::value for satisfeito ([SWS_CORE_01109]).
Tratamento de erros e segurança contra exceções
Quanto à segurança contra exceções, a chamada é classificada como conditionally exception safe ([SWS_CORE_01109]). Códigos de erro específicos do AUTOSAR, bem como vias de relatório via DET ou DEM, não existem para este construtor; caso a construção do tipo de destino T falhe, a exceção correspondente do tipo é repassada.
Interação e concorrência
A função posiciona-se ao lado do construtor padrão [SWS_CORE_01103] e do construtor nulo [SWS_CORE_01104], que criam instâncias vazias, bem como dos construtores de cópia e de movimentação [SWS_CORE_01105] e [SWS_CORE_01106]. Além disso, ara::core::Optional serve como portador de valores de retorno opcionais no tratamento de erros de ara::core::Result, por exemplo, na obtenção de valores via Ok() ([SWS_CORE_00770]) ou de erros via Err() ([SWS_CORE_00772]). Interpretação: Na ausência de garantias explícitas de segurança de thread em [SWS_CORE_01109], a chamada concorrente do construtor deverá ser segura apenas se o objeto de origem U estiver protegido contra modificações simultâneas. Pergunta Q-edf541fe968f3afe (aberta)
Esta nota de uso foi gerada automaticamente. Determinante é a especificação AUTOSAR.
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: dd45cef6ee33ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O construtor de cópia de conversão de ara::core::Optional está disponível através do arquivo de cabeçalho #include "ara/core/optional.h"[SWS_CORE_01110]. Ele serve para a criação síncrona de um Optional<T> a partir de uma instância existente const Optional<U>&. A marcação de especificação {<cond-explicit-2>} deverá significar que o construtor está declarado como explicit caso T não possa ser criado implicitamente a partir de const U&. Pergunta Q-4a4adc2b59d1fa53 (aberta)
Tratamento de erros e segurança de exceções
Para este construtor não existem códigos de erro específicos nem mensagens de DET ou DEM. A função é classificada como condicionalmente segura contra exceções (conditionally exception safe) [SWS_CORE_01110]. A garantia noexcept entra em vigor via noexcept(std::is_nothrow_constructible<T, const U&>::value) exclusivamente se o tipo de destino T puder ser construído a partir de const U& sem exceções [SWS_CORE_01110]. Caso a criação do valor de destino falhe, as exceções propagam-se inalteradas.
Simultaneidade e restrições
Ao contrário de outras funções como Ok()[SWS_CORE_00770], a especificação não indica segurança de thread para este construtor. Ele deverá ser reentrante, mas um acesso concorrente de leitura ou escrita ao objeto de origem Optional<U> requer sincronização externa. Pergunta Q-a0534498f685f575 (aberta)
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 5e86b0752dceProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função de template [SWS_CORE_01111] disponibiliza o construtor de movimentação de conversão da classe ara::core::Optional a partir do arquivo de cabeçalho #include "ara/core/optional.h". Ela aceita uma referência de rvalue Optional<U>&& para a inicialização de uma instância de Optional<T> e segue o comportamento de [optional] com o desvio documentado de uma especificação noexcept condicional [SWS_CORE_01111]. A cláusula de especificação {<cond-explicit-3>} deverá, como interpretação, controlar se a conversão ocorre de forma implícita ou explícita, dependendo das propriedades dos tipos T e U. Pergunta Q-0b21a6eafb9414d8 (aberta)
Quanto ao tratamento de erros e exceções, o construtor é classificado como condicionalmente seguro contra exceções (conditionally exception safe) [SWS_CORE_01111]. A execução é noexcept se, e somente se, std::is_nothrow_constructible<T, U>::value for satisfeito [SWS_CORE_01111]. Caso contrário, exceções podem ocorrer durante a construção do valor contido e ser propagadas para o chamador.
Dentro de ara::core::Optional, esta função complementa o construtor de movimentação regular [SWS_CORE_01106], o construtor de cópia [SWS_CORE_01105] bem como o construtor padrão [SWS_CORE_01103]. Além disso, o elemento interage estreitamente com ara::core::Result, cujos métodos Ok() e Err() retornam valores contidos ou erros como ara::core::Optional (como em [SWS_CORE_00770], [SWS_CORE_00771] e [SWS_CORE_00772]), bem como com a função auxiliar swap[SWS_CORE_01096].
Esta nota de uso foi gerada automaticamente com base nos dados de especificação.
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4b99ff09898eProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro emplace da classe ara::core::Optional destina-se a criar o valor contido do tipo T diretamente na memória do objeto opcional [SWS_CORE_01119]. A chamada ocorre de forma síncrona por meio do arquivo de cabeçalho ara/core/optional.h. Como parâmetros, a função recebe um pacote de argumentos variáveis Args&&... e o encaminha para o construtor do tipo T; é retornada uma referência lvalue para o valor recém-criado (T&) [SWS_CORE_01119].
No que diz respeito ao tratamento de exceções, a função está classificada como condicionalmente segura contra exceções (conditionally exception safe) e possui uma especificação condicional de noexcept baseada em std::is_nothrow_constructible<T, Args&&...>::value[SWS_CORE_01119]. Se a construção de T lançar uma exceção, aplica-se a segurança contra exceções do tipo subjacente; uma garantia de noexcept aplica-se exclusivamente se a construção garantir não lançar exceções. Códigos de erro específicos, eventos DEM ou mensagens DET não estão previstos na especificação [SWS_CORE_01119].
Em relação à concorrência, a especificação é omissa; Interpretação: o acesso de escrita simultâneo de múltiplas threads à mesma instância de ara::core::Optional provavelmente não é seguro para threads sem sincronização externa. Pergunta Q-c11efb3f95001493 (aberta) Além disso, um valor existente anteriormente deve ser destruído na reinicialização.
Na interação dentro de ara::core::Optional, existem sobrecargas alternativas: para listas de inicialização, está disponível uma variante com std::initializer_list[SWS_CORE_01120], enquanto para tipos de referência ara::core::Optional<T&> está definida uma sobrecarga dedicada [SWS_CORE_01164]. Mecanismos similares de emplace para construção in-place também existem no módulo core para contêineres como ara::core::Vector[SWS_CORE_01366], ara::core::Map[SWS_CORE_01458] e ara::core::Variant[SWS_CORE_01661], [SWS_CORE_01662], [SWS_CORE_01663], [SWS_CORE_01664].
Este texto foi gerado por uma IA com base na especificação AUTOSAR R25-11.
As per corresponding usage in [optional] except for the following deviations: 1. Function is conditionally noexcept
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: a5f272ff8d2cProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro emplace de [SWS_CORE_01120] destina-se a inicializar diretamente no local (in-place) o valor contido de um objeto do tipo ara::core::Optional. Ela recebe um std::initializer_list<U> bem como argumentos opcionais Args&&... e retorna uma referência T& para o valor recém-criado.
No que tange ao tratamento de erros e segurança contra exceções, a função está especificada como condicionalmente segura contra exceções (conditionally exception safe). A condição de noexcept depende, segundo [SWS_CORE_01120], exatamente do fato de o tipo de destino T poder ser construído sem exceções utilizando o std::initializer_list<U>& e os argumentos de encaminhamento (std::is_nothrow_constructible). Isso representa um desvio explícito do comportamento no [optional] padrão.
No conjunto dos componentes principais, esta sobrecarga complementa a construção in-place genérica sem lista de inicialização de [SWS_CORE_01119]. Para especializações de referência, existe também a atribuição via [SWS_CORE_01164]. Interpretação: como é habitual na contraparte padrão em [optional], havendo um valor anterior, este deve ser destruído antes da nova construção. Pergunta Q-b8a9274e43f0a0a9 (aberta)
Esta nota de uso foi gerada automaticamente e baseia-se nas diretrizes da especificação.
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 &
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e8663f9a82eeProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro reset da classe ara::core::Optional é disponibilizada por meio do cabeçalho #include "ara/core/optional.h" e serve para redefinir uma instância [SWS_CORE_01136]. A função possui a assinatura void reset () noexcept;, não recebe parâmetros e não fornece valor de retorno [SWS_CORE_01136]. Seu comportamento segue o uso correspondente em [optional][SWS_CORE_01136]; Interpretação: Com base nessa referência, a chamada provavelmente deve destruir um eventual valor de estado presente e transferir a instância para um estado não ocupado. Pergunta Q-c819444ae1a7df1f (aberta)
Em relação ao tratamento de falhas e tratamento de exceções, reset é declarada como segura contra exceções (exception safe), bem como com o identificador noexcept[SWS_CORE_01136]. Não são lançadas exceções nem são retornados códigos de erro [SWS_CORE_01136].
Na interação com outros componentes da biblioteca Core, são relevantes as seguintes referências:
Para referências opcionais ara::core::Optional<T&> está disponível uma sobrecarga de reset especificada como constexpr, que também é noexcept e segura contra exceções [SWS_CORE_01165].
Em distinção a Optional, o tipo ara::core::Bitset no cabeçalho ara/core/bitset.h também oferece funções reset: uma variante sem parâmetros que referencia o bitset modificado [SWS_CORE_01727], bem como uma sobrecarga baseada em posição com retorno Result e verificação para IsoStdOutOfRangeViolation[SWS_CORE_01728].
Este texto foi gerado automaticamente. Todas as informações apoiam-se no escopo da especificação do 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]
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4420db92e204Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
A função-membro de template value_or da classe ara::core::Optional, de acordo com [SWS_CORE_01134], serve para a obtenção síncrona do valor contido ou de um valor de fallback fornecido. Ela é incluída por meio do cabeçalho #include "ara/core/optional.h" e está declarada com a assinatura template <typename U> constexpr T value_or (U &&) const &; como método de referência lvalue constante. O comportamento baseia-se na definição correspondente de std::optional (“As per corresponding usage in [optional]”), retornando o valor T quando o conteúdo estiver definido e, caso contrário, o valor padrão transmitido.
Tratamento de erros e segurança de exceções
No que diz respeito ao tratamento de erros, a função é especificada explicitamente de acordo com [SWS_CORE_01134] como não segura contra exceções (“not exception safe”). Não estão previstos códigos de erro, mensagens DET ou DEM para esta chamada. Exceções lançadas durante operações de conversão ou cópia podem, portanto, propagar-se para fora.
Interação
Dentro de ara::core::Optional existem sobrecargas complementares de value_or:
[SWS_CORE_01135] disponibiliza a sobrecarga rvalue template <typename U> constexpr T value_or (U &&) &&;, que também é declarada como não segura contra exceções (“not exception safe”) e permite a movimentação otimizada para objetos temporários.
[SWS_CORE_01175] especifica a sobrecarga para a especialização ara::core::Optional<T&> com a assinatura template <typename U> constexpr T value_or (U &&u) const noexcept;, a qual, ao contrário de [SWS_CORE_01134], é rotulada como segura contra exceções (“exception safe”).
Esta nota de uso foi gerada automaticamente e baseia-se exclusivamente nos dados de especificação do AUTOSAR Release R25-11.
template <typename U> constexpr T value_or (U &&) &&;
As per corresponding usage in [optional]
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 1f9eb2809808ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
A função-membro qualificada para rvalue value_or da classe de template ara::core::Optional é fornecida por meio do arquivo de cabeçalho ara/core/optional.h[SWS_CORE_01135]. Conforme a referência a [optional], ela destina-se a consultar síncronamente o valor contido ou a retornar um valor substituto passado. Como esta chamada está vinculada a referências rvalue, o valor contido é provavelmente transferido por semântica de movimento, caso um valor esteja presente; caso contrário, o argumento passado é avaliado e convertido. Pergunta Q-e20f155d58dd0d72 (aberta)
Interação e sobrecargas
A função complementa a sobrecarga const lvalue [SWS_CORE_01134], que oferece o mesmo mecanismo de fallback para instâncias duradouras ou não temporárias. Para especializações em referências ara::core::Optional<T &>, existe diferentemente uma assinatura [SWS_CORE_01175] declarada como noexcept, ao passo que a sobrecarga geral é prevista para rvalues de tipos de valor.
Tratamento de erros e segurança de exceções
O método é explicitamente declarado como not exception safe[SWS_CORE_01135]. Códigos de erro específicos, mensagens DET ou DEM não existem. Interpretação: potenciais exceções devem provir primariamente de construtores de movimento ou operadores de conversão dos tipos envolvidos T e U, caso ocorram erros na criação do valor de retorno. Pergunta (aberta)
Este texto foi criado por uma IA e baseia-se exclusivamente nas especificações da versão R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão