structure ara::core::Monostate
struct Monostate final {...};
As per corresponding usage in [variant]
| Header-Datei | #include "ara/core/variant.h" |
|---|---|
| Forwarding-Header | #include "ara/core/core_fwd.h" |
| Scope | namespace ara::core |
Guide utilisateurGÉNÉRÉ PAR IA
Sert de type substitut vide dans les variantes afin de représenter un état vide non occupé ou initial.
Sert de type substitut vide dans les variantes afin de représenter un état vide non occupé ou initial.
La classe ara::core::Monostate sert dans le module core, conformément à sa référence à [variant], de type substitut sans état pour représenter un état vide dans des structures de données variantes. Interprétation : elle devrait faire office de pendant à std::monostate afin de rendre ara::core::Variant constructible par défaut lorsque les types utiles alternatifs ne fournissent pas de constructeur par défaut. Question Q-b724690dfd69af81 (ouverte) La structure étant définie comme final et ne contenant aucun champ de données, toutes les opérations de cycle de vie sont triviales et s'effectuent sans liaison dynamique de ressources. Les instances sont principalement utilisées comme alternative par défaut et peuvent être employées de manière concurrente sans surcoût de synchronisation.
Contexte
La classe ara::core::Monostate représente un bloc élémentaire au sein du module core de l'AUTOSAR Adaptive Platform. La déclaration en tant que struct Monostate final définit un type unité sans état, dont la responsabilité première consiste à représenter l'absence de valeur utile au sein de types sommes typés. En ce qui concerne sa sémantique formelle et son objet, la spécification renvoie à l'utilisation correspondante dans [variant]. Interprétation : il peut en être déduit que ara::core::Monostate agit comme un pendant direct à std::monostate du standard C++ et interagit étroitement avec ara::core::Variant afin de doter les variantes d'une alternative d'état explicitement vide. Question (ouverte)
Dans les interfaces C++ conformes au standard, une construction de variante typée nécessite, pour une construction sans paramètre, que l'alternative de type mentionnée en première position soit constructible par défaut. Si aucun des types utiles métier ne fournit de constructeur par défaut ou si une variante ne doit initialement représenter explicitement aucun état métier, ara::core::Monostate assume en première position de la liste de types le rôle d'un espace réservé bien formé. Grâce à ce découplage entre l'initialisation de la variante et la mise à disposition effective des données métier, la classe garantit que les interfaces et les résultats de fonctions basés sur des variantes peuvent toujours être initialisés de manière sûre au niveau des types, bien définie et économe en mémoire au sein de logiciels de calculateurs déterministes.
Cycle de vie
Le cycle de vie de ara::core::Monostate se caractérise par une absence totale d'état et une complexité minimale. Comme la structure est déclarée comme final et n'encapsule aucun élément de données, une instance ne possède aucun état interne modifiable, aucune phase ni aucune transition d'état. Interprétation : en tant que type substitut déclaré final sans données d'état propres, ara::core::Monostate devrait être trivialement constructible, copiable, déplaçable et destructible, de sorte que toutes les opérations de cycle de vie s'exécutent sans allocations de mémoire dynamiques, sans risque d'exception et avec une charge d'exécution négligeable. Question Q-9cf1c06bbd91b6ec (ouverte)
L'instanciation s'effectue généralement de manière implicite lors de la construction par défaut d'une variante englobante, ou de manière explicite lors de l'affectation d'un état vide. La destruction ne requiert aucune action de nettoyage, puisqu'aucune ressource du système d'exploitation ou de mémoire n'est liée. En ce qui concerne les relations de propriété et la concurrence, la classe se comporte comme un type valeur purement élémentaire : les instances peuvent être créées, copiées ou évaluées simultanément sur différents chemins d'exécution sans qu'aucun mécanisme de synchronisation ni aucune situation de compétition ne puissent survenir au niveau de la classe. La durée de vie d'une instance est alors strictement liée à la portée locale ou au conteneur englobant.
Parcours d'utilisation
Le chemin d'utilisation typique de ara::core::Monostate est indissociable de la déclaration et de la manipulation de ara::core::Variant. Lors de la définition d'une variante, ara::core::Monostate est indiqué en première position pour permettre un état initial vide. Si la variante est ensuite créée via son constructeur par défaut, elle adopte automatiquement cet état vide sans qu'il soit nécessaire d'instancier des types métier.
Au cours de la suite de l'exécution du programme, l'utilisateur vérifie, via des interrogations de type ou des patrons de visiteur, si la variante contient actuellement le type ara::core::Monostate, ce qui signale un état inactif ou inoccupé. Dès que des données utiles sont disponibles, la variante est écrasée par la valeur métier correspondante. Une réinitialisation à l'état inoccupé s'effectue par une nouvelle affectation de ara::core::Monostate{}. Interprétation : il existe vraisemblablement pour ara::core::Monostate des opérateurs d'égalité et de comparaison, de sorte que les comparaisons de deux instances donnent toujours l'égalité et que la comparaison relationnelle de variantes à l'état vide puisse être évaluée de manière déterministe. Question (ouverte)
Ce guide est basé exclusivement sur la déclaration de classe d'ara::core::Monostate et la référence à [variant] dans la Release R25-11 de l'AUTOSAR Adaptive Platform ; les aspects complémentaires ont été explicitement identifiés comme interprétation conformément aux règles.
gemini-3.8-flash-low· 2026-10-13 · Original allemand