Slaat typeveilig precies één waarde op uit een gedefinieerde typenverzameling met voorwaardelijke uitzonderingsveiligheid.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 223b5b60b80cHerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Slaat typeveilig precies één waarde op uit een gedefinieerde typenverzameling met voorwaardelijke uitzonderingsveiligheid.
De templateklasse ara::core::Variant dient als typeveilige union voor de opslag en het beheer van precies één waarde uit een vooraf gedefinieerde typenverzameling [SWS_CORE_01649]. Deze ondersteunt flexibele constructie-, toewijzings- en emplace-mechanismen en maakt het bepalen van het actieve alternatief via index()[SWS_CORE_01665] mogelijk. De belangrijkste bijzonderheid ten opzichte van de standaard betreft de gemodificeerde, voorwaardelijke noexcept-specificaties van alle modificerende operaties, evenals de beveiliging tegen de toestand valueless_by_exception()[SWS_CORE_01666].
Context
De templateklasse ara::core::Variant vormt een typeveilige union voor het AUTOSAR Adaptive Platform, die via de header ara/core/variant.h wordt geïncludeerd. Deze kapselt het beheer in van precies één waarde uit een tijdens compileertijd gedefinieerde typenlijst (template <typename... Types> class Variant). De definitie oriënteert zich fundamenteel op het gedrag van std::variant uit de C++-standaard [variant], maar vertoont specifieke AUTOSAR-afwijkingen wat betreft de uitzonderingsspecificatie. De beschrijving van de klasse verwijst in het metadatabestand naar [basic.string]; interpretatie: hierbij gaat het vermoedelijk om een redactionele inconsistentie, aangezien alle eisen consistent verwijzen naar de standaardsectie [variant]. Vraag Q-809de1af74fcb689 (open)
Levenscyclus
Een instantie van ara::core::Variant doorloopt deterministische levenscyclusfasen van de initialisatie via waardewisselingen tot aan de vernietiging. Het aanmaken gebeurt hetzij via de parameterloze default constructor [SWS_CORE_01649], die het eerste alternatief initialiseert, via copy en move constructors [SWS_CORE_01650], [SWS_CORE_01651] of via directe waardeoverdracht [SWS_CORE_01652]. Daarnaast zijn overbelastingen voor de in-place-constructie middels in_place_type_t[SWS_CORE_01653], [SWS_CORE_01654] en in_place_index_t[SWS_CORE_01655], [SWS_CORE_01656] beschikbaar, ook in combinatie met initialisatielijsten.
In de reguliere toestand bevat het object altijd een geldig alternatief, waarvan de op nul gebaseerde index met de methode index() kan worden bepaald [SWS_CORE_01665]. Faalt een waardewisseling tijdens een constructie of toewijzing door het optreden van een exceptie, dan gaat de instantie over naar de toestand valueless_by_exception()[SWS_CORE_01666]. Het object blijft in deze toestand totdat door een succesvolle herinitialisatie weer een geldig alternatief bezet is. De destructor vernietigt het actueel vastgehouden object correct en is voorwaardelijk uitzonderingsveilig gedeclareerd [SWS_CORE_01657].
Een typisch gebruiksverloop omvat de instantiatie, het toewijzen of vervangen van de inhoud, het opvragen van de toestand en de waarde-uitwisseling:
Initialisatie: Aanmaken van een instantie via een van de constructors, bijvoorbeeld door directe waardeoverdracht [SWS_CORE_01652] of expliciet typegerelateerd middels in_place_type_t[SWS_CORE_01653].
Tostandscontrole: Opvragen van de actieve type-index via index()[SWS_CORE_01665] alsmede beveiliging tegen eerdere fouten via valueless_by_exception()[SWS_CORE_01666].
Objectuitwisseling: Efficiënte uitwisseling van twee Variant-instanties via de lidfunctie swap()[SWS_CORE_01667].
Omdat de onderhavige specificatie-record-set uitsluitend lidfuncties bevat, ontbreken directe leesoperaties zoals een waardetoegang; vermoedelijk worden toegangs- en visitatiefuncties (analoog aan std::get of std::visit) als vrije hulpfuncties in de namespace ara::core aangeboden. Vraag Q-75847ac18088da57 (open)
Foutscenario's
Centraal in de foutafhandeling staat de eigenschap van voorwaardelijke uitzonderingsveiligheid (conditionally exception safe). Waar de standaardbibliotheek voor std::variant vaste noexcept-regels hanteert, wijkt AUTOSAR doelbewust af: alle constructors [SWS_CORE_01650], [SWS_CORE_01653], toewijzingsoperatoren [SWS_CORE_01658], emplace-operaties [SWS_CORE_01661], [SWS_CORE_01663], de swapfunctie swap()[SWS_CORE_01667] en de destructor [SWS_CORE_01657] zijn voorwaardelijk noexcept. Hun uitzonderingsgarantie hangt direct af van de noexcept-eigenschappen van de onderliggende typeconstructors.
Werpt de constructie van een nieuwe waarde tijdens een toewijzing of een emplace-aanroep een exceptie op, dan kan de variant in een ongeldige tussentoestand terechtkomen. Deze wordt gesignaleerd via valueless_by_exception()[SWS_CORE_01666]. Uitsluitend de twee opvraagfuncties index()[SWS_CORE_01665] en valueless_by_exception()[SWS_CORE_01666] bieden een onbeperkte noexcept-garantie en zijn volledig uitzonderingsveilig.
Deze handleiding is gebaseerd op de AUTOSAR-specificatie voor het Adaptive Platform (release R25-11, module core) en is samengesteld door een AI-curatie-assistent.
As per corresponding usage in [variant] except for the following deviations: 1. Function is conditionally noexcept
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 0fe1e0b61069HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De lidfunctie emplace construeert een alternatieve waarde van het type T direct in een bestaande instantie van ara::core::Variant[SWS_CORE_01661]. De functie wordt beschikbaar gesteld via het headerbestand #include "ara/core/variant.h" en synchroon uitgevoerd [SWS_CORE_01661]. Als parameter accepteert deze doorstuurreferenties args..., die worden doorgegeven aan de constructor van het doeltype T, en retourneert deze een referentie naar het nieuw gecreëerde object [SWS_CORE_01661].
Wat betreft foutafhandeling is de operatie gedeclareerd als voorwaardelijk uitzonderingsveilig (“conditionally exception safe”) [SWS_CORE_01661]. Deze volgt het standaardgedrag van variant, maar wijkt af door een voorwaardelijke noexcept-specificatie: een uitzondering is precies dan uitgesloten wanneer aan std::is_nothrow_constructible<T, Args...>::value is voldaan [SWS_CORE_01661]. Specifieke AUTOSAR-foutcodes of meldingen aan DET of DEM zijn voor deze basisfunctie niet gedefinieerd.
Wat betreft concurrency en aanroepcontext noemt de specificatie geen afwijkende garanties. Interpretatie: gelijktijdige schrijftoegang van meerdere threads tot dezelfde Variant-instantie via emplace is zonder externe synchronisatie vermoedelijk niet thread-safe, aangezien AUTOSAR verwijst naar de standaardsemantiek van variant. Vraag Q-4d9d118b9916a3dc (open)
As per corresponding usage in [variant] except for the following deviations: 1. Function is conditionally noexcept
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: a346c9068921HerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De lidfunctie emplace van ara::core::Variant uit de header ara/core/variant.h dient voor het synchroon aanmaken van een alternatief van het type T direct in het geheugen van de bestaande instantie [SWS_CORE_01662]. Hierbij worden een std::initializer_list<U> en doorgestuurde argumenten Args&&... args doorgegeven aan de constructor van het type. Als retourwaarde levert de functie een lvalue-referentie T& naar het nieuw geïnitialiseerde object op [SWS_CORE_01662].
Wat betreft de foutafhandeling en uitzonderingsafhandeling wijkt de functie af van de standaarddefinitie in [variant]: deze is geclassificeerd als voorwaardelijk uitzonderingsveilig (conditionally exception safe) en beschikt over een voorwaardelijke noexcept-specificatie [SWS_CORE_01662]. Een aanroep garandeert vrijwaring van uitzonderingen, mits std::is_nothrow_constructible<T, std::initializer_list<U>&, Args&&...>::value resulteert in true[SWS_CORE_01662]. Specifieke AUTOSAR-foutcodes of meldingskanalen naar DET en DEM bestaan voor dit element niet.
Met betrekking tot concurrency en randvoorwaarden geldt: aangezien emplace de toestand van de variant-instantie wijzigt, is een gelijktijdige aanroep zonder externe synchronisatie vermoedelijk niet thread-safe. Interpretatie: Voorafgaand aan de constructie van het nieuwe object wordt een eerder opgenomen waarde vernietigd, zoals overeenkomt met het algemene gedrag van [variant]. Vraag Q-548c84cc1d327030 (open)
In interactie met verwante interfaces vormt de functie de typegebaseerde tegenhanger van de overload zonder initialisatielijst [SWS_CORE_01661] en van de indexgebaseerde alternatieven [SWS_CORE_01663] en [SWS_CORE_01664]. Vergelijkbare interfaceconcepten zijn te vinden bij ara::core::Optional[SWS_CORE_01120] en bij containers zoals ara::core::Vector[SWS_CORE_01366] of ara::core::Map[SWS_CORE_01458], waarbij container-emplace-operaties in tegenstelling hiermee niet uitzonderingsveilig zijn.
Deze gebruiksinstructie is automatisch opgesteld op basis van de specificatiegegevens van AUTOSAR R25-11.
template <std::size_t I, typename... Args> variant_alternative_t< I, Variant< Types... > > & emplace (Args &&... args) noexcept({<cond-noexcept-11>});
As per corresponding usage in [variant] except for the following deviations: 1. Function is conditionally noexcept
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: f8cbed1f17b1HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Gebruik
De lidfunctie emplace van de klasse ara::core::Variant ([SWS_CORE_01663]) uit het headerbestand ara/core/variant.h dient voor de directe constructie van het door de template-index I bepaalde alternatief in het bestaande geheugen van het object. Als parameters worden de argumenten Args&&... args doorgegeven. De aanroep vindt synchroon plaats en levert een referentie naar de nieuw gecreëerde waarde van het type variant_alternative_t<I, Variant<Types...>> op ([SWS_CORE_01663]). Het gedrag richt zich naar de definitie in [variant] ([SWS_CORE_01663]).
Foutafhandeling en exception-veiligheid
De specificatie definieert als afwijking van de C++-standaard een voorwaardelijke noexcept({<cond-noexcept-11>})-clausule en de eigenschap conditionally exception safe ([SWS_CORE_01663]). Vermoedelijk hangt het optreden van uitzonderingen ervan af of de constructor van het doelalternatief voor de doorgegeven typen Args... uitzonderingsveilig is. Vraag Q-189fe417e9ef4980 (open) Specifieke foutcodes, retourwaarden bij fouten of meldingen aan DET of DEM zijn voor deze functie niet gespecificeerd.
Interactie en alternatieven
Binnen de module core en het type ara::core::Variant is de functie ingebed in een systeem van verdere overloads:
Indexgebaseerde initialisatie met een std::initializer_list onder [SWS_CORE_01664].
Typegebaseerde creatie van een alternatief via de typenaam T met [SWS_CORE_01661] resp. in combinatie met std::initializer_list via [SWS_CORE_01662].
template <std::size_t I, typename U, typename... Args> variant_alternative_t< I, Variant< Types... > > & emplace (std::initializer_list< U > il, Args &&... args) noexcept( {<cond-noexcept-12>});
As per corresponding usage in [variant] except for the following deviations: 1. Function is conditionally noexcept
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: a600ca3cb60dHerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De lidfunctie emplace uit ara/core/variant.h construeert synchroon een nieuwe alternatieve waarde direct ter plekke binnen een bestaande instantie van ara::core::Variant[SWS_CORE_01664]. Het aan te spreken type wordt daarbij vast bepaald via de template-index I. De aanroep accepteert een initialisatielijst il van het type std::initializer_list<U> en optionele argumenten args en levert een referentie naar de nieuw gecreëerde waarde van het type variant_alternative_t<I, Variant<Types...>>& terug [SWS_CORE_01664].
Voor de foutafhandeling is de operatie aangemerkt als voorwaardelijk uitzonderingsveilig (conditionally exception safe) en voorzien van een voorwaardelijke noexcept[SWS_CORE_01664]. De evaluatie van de voorwaarde {<cond-noexcept-12>} hangt er vermoedelijk van af of de constructor van het doeltype met il en args geen exceptions werpt. Vraag Q-87f90253fc61c883 (open) Specifieke foutcodes en meldingen aan DET of DEM zijn in de specificatie niet gedefinieerd; het gedrag bij uitzonderingen volgt, afgezien van de noexcept-declaratie, het standaardgedrag van [variant][SWS_CORE_01664].
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: fb0fc41b4094HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De lidfunctie index van de klasse ara::core::Variant dient voor het synchroon opvragen van de zero-based index van het momenteel vastgehouden type conform specificatie [SWS_CORE_01665]. Deze gedraagt zich analoog aan het overeenkomstige gebruik in het standaard-C++-type std::variant („As per corresponding usage in [variant]”), accepteert geen parameters en retourneert de huidige index als std::size_t. Deze is gedeclareerd in de header ara/core/variant.h en gekwalificeerd als constexpr evenals noexcept.
Met betrekking tot foutafhandeling en uitzonderingsveiligheid is de methode gespecificeerd als exception safe[SWS_CORE_01665]. Aangezien deze gedeclareerd is als noexcept, gooit deze zelf geen excepties en veroorzaakt deze geen foutcondities. Aanroepers kunnen de geretourneerde index evalueren om voorafgaand aan toegang tot alternatieve waarden te verifiëren welk type in ara::core::Variant actief is.
In het samenspel met de getypeerde toegangsfuncties ara::core::get speelt index een centrale rol: de overbelastingen van get voor lvalues en rvalues controleren expliciet de voorwaarde variant.index() != I conform [SWS_CORE_01613], [SWS_CORE_01614], [SWS_CORE_01615] en [SWS_CORE_01616]. Als de index niet overeenkomt met de opgevraagde positie-index I, wordt in afwijking van std::bad_variant_access de schending IsoStdBadVariantAccessViolation veroorzaakt. Een voorafgaande vergelijking middels index() voorkomt deze foutieve toegang tijdens runtime.
Wat betreft concurrency is de methode als const-operatie veilig voor gelijktijdige leestoegang tot dezelfde variant, zolang er geen concurrerende modificaties plaatsvinden; van interne synchronisatie tegen parallelle schrijftoegang is vermoedelijk geen sprake. Vraag Q-12e0dad0a6b8c5d0 (open)
Deze tekst is gegenereerd door een AI op basis van de specificatie AUTOSAR R25-11.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 015c4319d2b5HerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Gebruik
De lidfunctie valueless_by_exception van de klasse ara::core::Variant wordt in de module core beschikbaar gesteld via het headerbestand #include "ara/core/variant.h" ([SWS_CORE_01666]). Overeenkomstig de signatuur constexpr bool valueless_by_exception () const noexcept; vereist deze geen aanroepparameters en retourneert synchroon een booleaanse waarde ([SWS_CORE_01666]). De functionele betekenis richt zich naar de gebruikelijke semantiek van [variant] („As per corresponding usage in [variant]”) ([SWS_CORE_01666]). Interpretatie: de geretourneerde status true signaleert de aanroeper vermoedelijk dat een eerdere waardetoewijzing of typewijziging is afgebroken door het optreden van een exceptie en dat het Variant-object daarom tijdelijk geen geldige toestand representeert. Vraag Q-af7c00c7eb4ef5a1 (open)
Foutafhandeling en exception-veiligheid
Wat betreft het foutgedrag is de methode gedeclareerd als noexcept en formeel geclassificeerd als exception safe ([SWS_CORE_01666]). Bij het opvragen bestaat er geen eigen foutgeval; de functie gooit geen C++-excepties ([SWS_CORE_01666]). Specifieke foutcodes, feedbackbeschrijvingen of meldingen aan diagnose- en foutbewakingsinstanties zoals DET of DEM zijn voor dit element niet gedefinieerd ([SWS_CORE_01666]).
Gelijktijdigheid en beperkingen
Aangezien valueless_by_exception gespecificeerd is als const- en constexpr-methode, vinden tijdens de uitvoering generlei modificerende toegangen tot de interne toestand van het object plaats ([SWS_CORE_01666]). Interpretatie: gelijktijdige leestoegangen op dezelfde instantie vanuit meerdere threads zijn vermoedelijk veilig uitvoerbaar zonder afzonderlijke synchronisatie, zolang concurrerende schrijfoperaties uitgesloten blijven. Vraag Q-5c28f8cef1c1f097 (open)
Deze gebruiksinstructie is geautomatiseerd gegenereerd op basis van AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel