स्ट्रक्चर ara::core::variant_size< Variant< Types... > >
template <typename... Types> struct variant_size< Variant< Types... > > {...};
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 |
उपयोगकर्ता गाइडएआई जनित
कंपाइल-टाइम पर किसी Variant ऑब्जेक्ट के वैकल्पिक प्रकारों की संख्या को एक स्थिर मान के रूप में निर्धारित करता है।
कंपाइल-टाइम पर किसी Variant ऑब्जेक्ट के वैकल्पिक प्रकारों की संख्या को एक स्थिर मान के रूप में निर्धारित करता है।
टेम्पलेट ara::core::variant_size< Variant< Types... > > ara::core::Variant के वैकल्पिक प्रकारों की संख्या निर्धारित करने के लिए मॉड्यूल core में एक कंपाइल-टाइम ट्रेट के रूप में कार्य करता है। विशेषज्ञता रनटाइम पर इंस्टेंसेस बनाए बिना जेनेरिक एल्गोरिदम और स्टेटिक असर्शन्स के लिए यह प्रकार जानकारी प्रदान करती है। एक आवश्यक सीमा शर्त के रूप में, संपूर्ण मूल्यांकन कंपाइलर द्वारा विशुद्ध रूप से स्टेटिक रूप से किया जाता है, यही कारण है कि कोई रनटाइम त्रुटियां या गतिशील जीवनचक्र मौजूद नहीं हैं।
संदर्भ
क्लास टेम्पलेट ara::core::variant_size< Variant< Types... > > AUTOSAR Adaptive Platform के मॉड्यूल core के भीतर प्रकार ara::core::Variant के लिए सामान्य ट्रेट संरचना ara::core::variant_size की एक आंशिक विशेषज्ञता का प्रतिनिधित्व करता है। इस विशेषज्ञता की भूमिका वैरियाडिक टेम्पलेट Variant< Types... > में घोषित वैकल्पिक प्रकारों की संख्या के बारे में संकलन समय पर जानकारी प्रदान करना है। जेनेरिक एल्गोरिदम, टेम्पलेट मेटाप्रोग्रामिंग लाइब्रेरी और टाइप-सुरक्षित यूनियनों के लिए प्रकार-निर्भर तर्क लागू करने वाले डेवलपर्स मुख्य रूप से इंटरैक्शन भागीदारों के रूप में कार्य करते हैं। सामान्य विवरण के अनुसार, व्यवहार वेरिएंट्स के लिए C++ मानक में संबंधित उपयोग पर आधारित है। विशेषज्ञता द्वारा ara::core::Variant के लिए वही कंपाइल-टाइम इंटरफेस और मेटाप्रोग्रामिंग पैटर्न प्रदान करने के लिए एक एकीकरण सेतु के रूप में कार्य करने की संभावना है, जैसा कि डेवलपर्स आधुनिक C++ वातावरण से जानते हैं। प्रश्न Q-755dac46e27ba347 (खुला)
जीवनचक्र
एक शुद्ध संकलन-समय निर्माण के रूप में, ara::core::variant_size< Variant< Types... > > का प्रोग्राम के रनटाइम पर कोई गतिशील जीवनचक्र नहीं है। न तो गतिशील मेमोरी में निर्माण प्रक्रियाएं हैं और न ही विनाश चरण या स्थिति संक्रमण हैं। संरचना में संभवतः कोई परिवर्तनीय सदस्य डेटा समाहित नहीं होना चाहिए और विशुद्ध रूप से कंपाइल-टाइम स्थिरांक या मेटाफ़ंक्शन के रूप में कार्य करना चाहिए। प्रश्न (खुला) चूंकि सभी मूल्यांकन संकलन के दौरान कंपाइलर द्वारा पहले ही किए जा चुके होते हैं, इसलिए समवर्तीता, रनटाइम पर थ्रेड सुरक्षा और स्पष्ट स्वामित्व संबंध कोई भूमिका नहीं निभाते हैं। रनटाइम पर संरचना के इंस्टेंसेस बनाने की आवश्यकता नहीं है; इसके बजाय, कॉलिंग कोड आमतौर पर स्टेटिक सदस्य स्थिरांक या टाइप-उपनाम परिभाषाओं के माध्यम से मूल्यांकन परिणाम तक पहुंचता है। व्युत्पन्न मानों का जीवनकाल इस प्रकार अनुवाद इकाई से मेल खाता है और संकलित कोड में स्टेटिक मेटा-जानकारी के रूप में रहता है।
उपयोग पथ
ara::core::variant_size< Variant< Types... > > का विशिष्ट उपयोग पथ पूरी तरह से टेम्पलेट अभिव्यक्तियों या स्टेटिक असर्शन्स के भीतर होता है। एक प्रतिनिधि प्रवाह में, एक एप्लिकेशन या मॉड्यूल पहले एक ठोस वेरिएंट प्रकार घोषित करता है, उदाहरण के लिए कई वैकल्पिक पेलोड प्रकारों के साथ। एक जेनेरिक एल्गोरिदम विकल्पों की कुल संख्या निर्धारित करने के लिए इस वेरिएंट प्रकार के साथ पैरामीटर के रूप में ara::core::variant_size तक पहुंचता है। इस पहुंच की व्याख्या यह है कि संरचना एक स्टेटिक डेटा तत्व के माध्यम से प्रकारों की संख्या का स्थिर पूर्णांक मान प्रदान करती है। यह मान आमतौर पर स्टेटिक लूप्स, रिकर्सिव टेम्पलेट फ़ंक्शंस या static_assert-जांच में उपयोग किया जाता है, उदाहरण के लिए यह सुनिश्चित करने के लिए कि एक्सेस इंडेक्स वेरिएंट प्रकार सूची की अनुमत सीमाओं के भीतर है। इस प्रक्रिया के लिए किसी पूर्व इनिशियलाइज़ेशन की आवश्यकता नहीं होती है और इससे कोई रनटाइम ओवरहेड नहीं होता है।
त्रुटि परिदृश्य
चूंकि ara::core::variant_size< Variant< Types... > > का मूल्यांकन विशेष रूप से कंपाइल-टाइम पर किया जाता है, इसलिए क्लासिक रनटाइम त्रुटियां, ara::core::ErrorCode जैसे त्रुटि कोड या गतिशील अपवाद नहीं होते हैं। संभावित त्रुटि परिदृश्य संकलन चरण तक सीमित हैं। यदि ट्रेट को ऐसे टाइप तर्कों के साथ इंस्टैंशिएट किया जाता है जो एक मान्य ara::core::Variant का प्रतिनिधित्व नहीं करते हैं या जिनमें अपूर्ण प्रकार की परिभाषाएं हैं, तो कंपाइलर संकलन से इनकार कर देता है। इच्छित टेम्पलेट इंटरफ़ेस के बाहर गलत उपयोग व्याख्यात्मक रूप से सार्थक कंपाइलर त्रुटियों का कारण बन सकता है, उदाहरण के लिए यदि गैर-मौजूद तत्वों तक पहुँचा जाता है या अन्य ट्रेट सहायकों के संयोजन में इंडेक्स सीमाओं का उल्लंघन किया जाता है। प्रश्न Q-03a26a0bd31b942d (खुला) उपयोग के लिए पूर्व-शर्तों में अनिवार्य रूप से यह शामिल है कि पास किया गया वेरिएंट प्रकार सुगठित घोषित किया गया हो। पोस्ट-शर्तें संकलन समय पर निर्धारित गणना मान की विश्वसनीय उपलब्धता के रूप में मौजूद हैं।
यह मार्गदर्शिका रिलीज़ R25-11 से core मॉड्यूल के इंटरफ़ेस डेटा पर आधारित है। सभी जानकारी बिना किसी वारंटी के है।
gemini-3.8-flash-low· 2026-10-13 · जर्मन मूल