DEENESPTFRRUARHIKOZHNL

structure ara::core::variant_size

[SWS_CORE_01600]

template <typename T> struct variant_size;

As per corresponding usage in [variant]

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

Guide utilisateurGÉNÉRÉ PAR IA

Détermine à la compilation le nombre de types alternatifs d'un construit Variant pour les applications adaptatives.
GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 7a464dd06736 Provenance Questions ouvertes (3)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Détermine à la compilation le nombre de types alternatifs d'un construit Variant pour les applications adaptatives.

Le modèle de classe ara::core::variant_size fournit pour AUTOSAR Adaptive Platform un construit de métaprogrammation pour l'interrogation statique du nombre de types dans des variants. Conformément à la spécification, le template s'aligne sur l'utilisation correspondante dans [variant]. Interprétation : l'évaluation s'effectue exclusivement au moment de la compilation par le compilateur, de sorte qu'aucune allocation de mémoire ni transition dynamique d'état n'a lieu à l'exécution. Question Q-9438291a39a7af27 (ouverte) La contrainte essentielle est que le type de données transmis doit posséder une spécialisation de Variant valide, car des types inadaptés entraînent une erreur lors de la compilation.

Contexte

Dans le cadre d'AUTOSAR Adaptive Platform, le module core met à disposition des structures de données fondamentales, des définitions de types et des construits utilitaires pour les applications adaptatives. Le modèle de classe ara::core::variant_size est déclaré syntaxiquement comme template <typename T> struct variant_size; et traite la manipulation de types basés sur des variants dans le système. D'après la description de la spécification, la fonctionnalité s'aligne sur l'utilisation correspondante dans [variant]. Interprétation : la structure agit ainsi comme un type trait typique de compilation, dont la responsabilité centrale consiste à interroger à la compilation le nombre d'alternatives contenues dans un type Variant. Question Q-7b29532c4a4dbfb1 (ouverte)

Les partenaires d'interaction se limitent aux composants logiciels, algorithmes et templates de fonction au sein de la plateforme qui évaluent des structures d'unions à sûreté de typage. Notamment en combinaison avec des types variants tels que ara::core::variant, ara::core::variant_size permet aux développeurs et aux fonctions de bibliothèque d'interroger des métainformations sur des listes de types sans devoir créer d'instances des types sous-jacents. Comme sa déclaration est ancrée dans l'espace de noms ara::core, elle forme une brique standardisée pour les composants logiciels adaptatifs qui fonctionnent selon des modèles déterministes et économes en ressources.

Cycle de vie

Comme ara::core::variant_size est conçu comme un pur construit template sans état à l'exécution, son cycle de vie diffère fondamentalement de celui des objets d'exécution réguliers d'Adaptive Platform. Interprétation : il n'existe ni allocations dynamiques, ni relations de possession, ni transitions d'état, ni processus de destruction explicite, car la structure est évaluée exclusivement dans le cadre de l'instanciation de template par le compilateur. Question (ouverte)

Aucune variable d'instance ni tampon interne n'est prévu dans ce concept. Le type n'est typiquement pas alloué comme objet dynamique sur le tas ou sur la pile, mais sert de source de constantes au moment de la compilation. En ce qui concerne la concurrence, aucune exigence de synchronisation n'apparaît : comme l'accès s'effectue de manière purement statique et qu'aucun état modifiable partagé n'existe, l'interrogation est possible de façon intrinsèquement sûre vis-à-vis de la concurrence et sans aucun surcoût à l'exécution.

Parcours d'utilisation

Le chemin d'utilisation typique de ara::core::variant_size se déroule entièrement pendant la compilation de code source C++. Un développeur ou un algorithme générique utilise le trait pour effectuer des branchements ou des assertions statiques d'après le nombre de types admissibles d'un variant.

Dans un premier temps, le type cible souhaité, typiquement un variant avec plusieurs alternatives de type, est transmis en tant qu'argument de template à ara::core::variant_size. À l'étape suivante, le code appelant accède à la valeur statique de la structure afin d'obtenir la valeur numérique du nombre de types. Cette étape s'effectue souvent dans le contexte de vérifications static_assert, de construits de boucles génériques ou de chaînes de métaprogrammation par templates, afin de garantir que seuls des variants avec un nombre minimal ou maximal d'éléments attendu sont traités.

Interprétation : si un type de données inadapté pour lequel aucune spécialisation n'existe venait à être transmis, l'opération s'interromprait directement dans le compilateur avec une erreur de compilation, de sorte que les utilisations non valides de types sont détectées et repoussées dès avant l'exécution du programme. Question (ouverte)

Ce guide est basé sur les données de spécification d'AUTOSAR R25-11 relatives au module core. Tous les aspects non directement attestés sont indiqués comme interprétation.