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.
Sert de type tag pour la construction directe in situ d'une valeur dans un Variant à partir de son index.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 39c809af4202ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Sert de type tag pour la construction directe in situ d'une valeur dans un Variant à partir de son index.
Le modèle de classe ara::core::in_place_index_t sert de type tag pour identifier des constructions in situ à un index déterminé au sein de ara::core::Variant, afin d'éviter les opérations inutiles de copie ou de déplacement de la valeur cible. Les instances sont transmises de manière ciblée aux constructeurs de Variant correspondants, la création s'effectuant via le constructeur par défaut issu de ara/core/utility.h[SWS_CORE_04032]. Le constructeur étant défini comme explicit et noexcept, les conversions de type implicites sont exclues et l'instanciation est garantie sans exception [SWS_CORE_04032].
Contexte
Le modèle de classe ara::core::in_place_index_t est une structure utilitaire du module core d'AUTOSAR Adaptive Platform et est mis à disposition via le fichier d'en-tête ara/core/utility.h[SWS_CORE_04032]. Son rôle fonctionnel consiste à servir de type tag unique pour les opérations in situ différenciées par un index numérique. Un exemplaire de ce type est transmis à des constructeurs spécifiques de ara::core::Variant afin d'indiquer l'intention que la construction du type contenu s'effectue directement sur place (« in-place »), sans exécuter d'opérations de copie ou de déplacement.
Dans la collaboration entre l'appelant et le type somme ara::core::Variant, ara::core::in_place_index_t prend en charge la fonction de tag dispatching. Interprétation : la distinction basée sur l'index devrait être particulièrement pertinente pour les instances de Variant contenant plusieurs alternatives du même type ; dans ce cas, une sélection reposant uniquement sur le type de données serait ambiguë, de sorte que l'adressage via le paramètre de modèle Index détermine l'alternative de type exacte dans le paquet de types. Question Q-fc429a7c9e7e9362 (ouverte)
Cycle de vie
Le cycle de vie de ara::core::in_place_index_t est élémentaire et dépourvu de transitions d'état complexes. La création s'effectue via le constructeur par défaut explicit in_place_index_t() noexcept = default;[SWS_CORE_04032]. La qualification en tant que explicit empêche toute conversion de type implicite, ce qui impose une instanciation explicite et strictement typée [SWS_CORE_04032].
Comme ara::core::in_place_index_t agit comme un pur indicateur et ne possède ni attributs internes ni ressources dynamiques, l'objet est totalement sans état. Sa destruction est triviale et n'entraîne aucun effet secondaire. En matière de concurrence, la structure est intrinsèquement thread-safe : en l'absence d'états mutables, les instances peuvent être utilisées sans effort de synchronisation au-delà des frontières des threads.
Parcours d'utilisation
Le déroulement typique pour l'utilisation de ara::core::in_place_index_t se divise en les étapes suivantes :
Définition de l'index : l'appelant détermine le paramètre de modèle numérique Index, qui représente l'alternative souhaitée au sein du ara::core::Variant.
Instanciation du tag : une instance de ara::core::in_place_index_t<Index> est créée via le constructeur par défaut [SWS_CORE_04032]. Interprétation : en pratique, la création devrait de préférence s'effectuer comme argument temporaire directement au sein de l'appel. Question Q-7c6292c2e97347b0 (ouverte)
Transmission au constructeur : l'instance de tag est transmise comme premier argument au constructeur de ara::core::Variant, suivie des arguments de constructeur pour le type cible géré à cette position.
Initialisation directe :ara::core::Variant construit l'objet cible directement dans la zone de mémoire allouée sans créer préalablement de copies temporaires.
Diagramme de séquence : déroulement typique de la construction in situ d'une valeur de Variant via ara::core::in_place_index_t. Sources : [SWS_CORE_04032]
Scénarios d'erreur
Concernant la tolérance aux pannes, ara::core::in_place_index_t se caractérise par une robustesse maximale. Le constructeur par défaut est spécifié avec noexcept et est réputé sûr vis-à-vis des exceptions (« exception safe ») [SWS_CORE_04032]. Il n'existe ni codes d'erreur ni états d'erreur définis pour cette structure.
Les utilisations erronées lors de conversions implicites sont rejetées au moment de la compilation grâce à la spécification en tant que explicit[SWS_CORE_04032]. Si une exception devait être levée pendant l'exécution du constructeur in situ de ara::core::Variant, celle-ci ne proviendrait pas de ara::core::in_place_index_t, mais trouverait sa cause dans le comportement d'erreur du type cible construit.
Ce guide a été généré par une IA sur la base de la spécification AUTOSAR R25-11.
Diagramme de classes UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Original allemand