DEENESPTFRRUARHIKOZHNL

estrutura ara::core::in_place_index_t

[SWS_CORE_04031] Upstream: RS_AP_00130

template <std::size_t Index> struct in_place_index_t {...};

Denote an index-distinguishing operation to be performed in-place. An instance of this type can be passed to certain constructors of ara::core::Variant to denote the intention that construction of the contained type shall be done in-place, i.e. without any copying taking place.

Header-Datei#include "ara/core/utility.h"
Forwarding-Header#include "ara/core/core_fwd.h"
Scopenamespace ara::core

Guia do utilizadorGERADO POR IA

Serve como tipo de tag para a construção direta in-place de um valor em um Variant com base em seu índice.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 39c809af4202 Procedência Perguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Serve como tipo de tag para a construção direta in-place de um valor em um Variant com base em seu índice.

O modelo de classe ara::core::in_place_index_t serve como tipo de tag para identificar construções in-place em um determinado índice dentro de ara::core::Variant, a fim de evitar operações desnecessárias de cópia ou movimentação do valor de destino. As instâncias são passadas de forma direcionada a construtores adequados do Variant, sendo a criação realizada por meio do construtor padrão de ara/core/utility.h [SWS_CORE_04032]. Como o construtor está definido como explicit e noexcept, conversões implícitas de tipo estão excluídas e a instanciação é garantidamente segura contra exceções [SWS_CORE_04032].

Contexto

O modelo de classe ara::core::in_place_index_t é uma estrutura auxiliar no módulo core da AUTOSAR Adaptive Platform e é disponibilizado por meio do arquivo de cabeçalho ara/core/utility.h [SWS_CORE_04032]. Seu papel funcional consiste em atuar como um tipo de tag exclusivo para operações in-place que são diferenciadas por um índice numérico. Uma instância desse tipo é passada para construtores específicos de ara::core::Variant para indicar a intenção de que a construção do tipo contido deve ocorrer diretamente no local (“in-place”), sem que operações de cópia ou movimentação sejam executadas.

Na colaboração entre o chamador e o tipo soma ara::core::Variant, ara::core::in_place_index_t assume a função de despacho por tag (tag-dispatching). Interpretação: A diferenciação baseada em índice deve ser relevante, em particular, para instâncias de Variant que contêm múltiplas alternativas do mesmo tipo; nesse caso, uma seleção apenas pelo tipo de dados seria ambígua, de modo que o endereçamento por meio do parâmetro de template Index determina a alternativa exata do tipo no pacote de tipos. Pergunta Q-fc429a7c9e7e9362 (aberta)

Ciclo de vida

O ciclo de vida de ara::core::in_place_index_t é elementar e isento de transições complexas de estado. A criação ocorre por meio do construtor padrão explicit in_place_index_t() noexcept = default; [SWS_CORE_04032]. A designação como explicit impede uma conversão implícita de tipo, o que força uma instanciação explícita e com rigor de tipos [SWS_CORE_04032].

Como ara::core::in_place_index_t atua como um puro indicador e não possui atributos internos nem recursos dinâmicos, o objeto é completamente sem estado (stateless). A destruição é trivial e não acarreta efeitos colaterais. No que tange à concorrência, a estrutura é inerentemente segura para threads: como não existem estados mutáveis, as instâncias podem ser usadas através de fronteiras de threads sem custos de sincronização.

Caminho de utilização

O fluxo típico para a utilização de ara::core::in_place_index_t divide-se nos seguintes passos:

  • Definição de índice: O chamador determina o parâmetro numérico de template Index, que representa a alternativa desejada dentro do ara::core::Variant.
  • Instanciação da tag: Uma instância de ara::core::in_place_index_t<Index> é criada por meio do construtor padrão [SWS_CORE_04032]. Interpretação: Na prática, a criação deve ocorrer preferencialmente como um argumento temporário diretamente na chamada. Pergunta Q-7c6292c2e97347b0 (aberta)
  • Passagem para o construtor: A instância da tag é passada como primeiro argumento para o construtor de ara::core::Variant, seguida pelos argumentos do construtor para o tipo de destino gerenciado nessa posição.
  • Inicialização direta: ara::core::Variant constrói o objeto de destino diretamente na área de memória alocada, sem a criação prévia de cópias temporárias.
Construção in-place de um valor Variant via in_place_index_tAnwenderin_place_index_t<Index>VariantZielobjektexplicit in_place_index_t()Tag-InstanzVariant(in_place_index_t<Index>, args...)Resolver índiceIn-Place-Konstruktion(args...)Objekt instanziiertInitialisierte Variant-Instanz

Diagrama de sequência: Fluxo típico da construção in-place de um valor de Variant via ara::core::in_place_index_t. Fontes: [SWS_CORE_04032]

Cenários de erro

No que diz respeito à tolerância a falhas, ara::core::in_place_index_t destaca-se pela máxima robustez. O construtor padrão é especificado com noexcept e é considerado seguro contra exceções (“exception safe”) [SWS_CORE_04032]. Não existem códigos de erro nem estados de erro definidos para esta estrutura.

Usos incorretos em conversões implícitas são rejeitados em tempo de compilação pela especificação como explicit [SWS_CORE_04032]. Caso seja disparada uma exceção durante a execução do construtor in-place de ara::core::Variant, ela não se origina de ara::core::in_place_index_t, mas baseia-se no comportamento de erro do tipo de destino construído.

Este guia foi gerado por uma IA com base na especificação AUTOSAR R25-11.

Diagrama de classes UML

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__core__in_place_index_t938 «struct» in_place_index_t + in_place_index_t()

Construtores e destrutor

Default constructor

explicit in_place_index_t () noexcept=default;

Documentação dos métodos

função in_place_index_t [SWS_CORE_04032] Upstream: RS_AP_00130

explicit in_place_index_t () noexcept=default;

Default constructor

Header-Datei#include "ara/core/utility.h"
Scopestruct ara::core::in_place_index_t
Exception-Sicherheitexception safe

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_CORE_04032
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_CORE_04032@rel:R25-11#d5dc1a89
Content hash
d5dc1a89
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Core.pdf#nameddest=SWS_CORE_04032
Status: valid/unmigrated Version: rel:R25-11#ed0aabbb Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_CORE_04032@rel:R25-11#ed0aabbb
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#8aa0e9952026-09-30
  • R19-11rel:R19-11#1dfe84832026-10-14
  • R20-11rel:R20-11#98f310882026-10-14
  • R21-11rel:R21-11#98f310882026-10-14
  • R22-11rel:R22-11#b23504bd2026-10-14
  • R23-11rel:R23-11#b523cc942026-10-14
  • R24-11rel:R24-11#a52ebef82026-10-14
  • R25-11rel:R25-11#ed0aabbb2026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill