نطاق أسماء std
دليل المستخدممولَّد بالذكاء الاصطناعي
يُمكّن من دمج أنواع ara::core في الحاويات القياسية ووسائل لغة مكتبة C++ القياسية.
يُمكّن من دمج أنواع ara::core في الحاويات القياسية ووسائل لغة مكتبة C++ القياسية.
توفر مساحة الأسماء std في الوحدة core تخصصات قوالب لـ std::hash وstd::tuple_size وstd::tuple_element لأنواع بيانات AUTOSAR Adaptive Platform. يتيح ذلك الاستخدام المباشر لأنواع مثل ara::core::String وara::core::Optional وara::core::Variant وara::core::Vector وara::core::Array في الحاويات القياسية ومع وسائل لغة صفوف (Tuple) C++. والقيد الحاكم هو أنه في حالة الأنواع المتداخلة، يجب أن تمتلك أنواع البيانات المتضمنة أيضًا تخصصات صالحة في وقت الترجمة.
السياق
في الوحدة core من AUTOSAR Adaptive Platform، تخدم مساحة الأسماء std الدمج السلس للأنواع الأساسية المحددة للمنصة في مكتبة C++ القياسية. وبدلًا من تقديم أنواع جديدة، توفر مساحة الأسماء تخصصات قوالب موجهة لفئات مساعدة قياسية. وتشتمل أطراف التفاعل على ثلاثة مكونات أساسية: الأنواع العامة لمكتبة C++ القياسية (ولا سيما الحاويات التجميعية غير المرتبة وأدوات Tuple المساعدة)، وتخصصات القوالب داخل std، وأنواع البيانات ara::core::Array وara::core::Monostate وara::core::Optional وara::core::String وara::core::StringView وara::core::Variant وara::core::Vector المحددة في الوحدة core.
مخطط السياق: التفاعل بين الحاويات القياسية والتخصصات في std وأنواع ara::core. المصادر: تصريحات الحمولة للوحدة core
تتيح تخصصات std::hash استخدام أنواع البيانات التكيفية الأساسية مباشرة كمفاتيح في الحاويات القياسية مثل std::unordered_map أو std::unordered_set. وبالتوازي مع ذلك، توسع التخصصات std::tuple_size وstd::tuple_element لـ ara::core::Array دعم واجهات البرمجة الوصفية (Metaprogramming) ووسائل اللغة القياسية.
مسار الاستخدام
يبدأ مسار الاستخدام النموذجي باستخدام نوع بيانات ara::core في تعليمات برمجة عامة بلغة C++. على سبيل المثال، يصرح أحد التطبيقات عن جدول تجزئة بمفاتيح من النوع ara::core::String أو ara::core::Optional<T>. وعند الإدراج أو الحذف أو البحث، تصل الحاوية ضمنيًا إلى std::hash<ara::core::String> أو std::hash<ara::core::Optional<T>> لتحديد قيمة تجزئة المفتاح.
تغطي التخصصات هياكل بيانات مختلفة:
- السلاسل النصية ومساقط الرؤية: يحسب
std::hash<ara::core::String>وstd::hash<ara::core::StringView>قيم التجزئة عبر تسلسل الأحرف المتضمن. - الأنواع المركبة: يُمكّن
std::hash<ara::core::Optional<T>>وstd::hash<ara::core::Variant<...>>وstd::hash<ara::core::Vector<T, Allocator>>من تجزئة هياكل الأنواع المعقدة. التفسير: يُرجَّح أن تسترشد التخصصات لـara::core::Optionalوara::core::Variantبالسلوك الدلالي للنماذج القياسية وتولد قيمًا حتمية للحالات الفارغة أو غير المشغولة. سؤال Q-c432b06f0ba32c5e (مفتوح) - الأنواع عديمة الحالة: يوفر
std::hash<ara::core::Monostate>دالة تجزئة للحالات الفارغة، كما تُستخدم عادة في المتغيرات البديلة (Variants). - بروتوكول Tuple: بالنسبة لحقول البيانات الثابتة، يوفر
std::tuple_size<ara::core::Array<T, N>>عدد العناصر في وقت الترجمة، بينما يحددstd::tuple_element<I, ara::core::Array<T, N>>نوع بيانات الموضعI. التفسير: يُرجَّح أن تتيح تخصصاتstd::tuple_sizeوstd::tuple_elementبذلك استخدامara::core::Arrayمع الارتباطات المهيكلة (Structured Bindings). سؤال Q-3abb70390e67dbce (مفتوح)
سيناريوهات الأخطاء
نظرًا لأن العناصر الموجودة في مساحة الأسماء std هي حصرًا تخصصات قوالب، فإن سيناريوهات الخطأ تظهر في المقام الأول في وقت الترجمة. وتشمل مجموعات المشكلات النموذجية:
- غياب قابلية التجزئة للأنواع الأساسية: إذا تم إنشاء مثيل لـ
std::hashلنوع متداخل مثلara::core::Optional<T>أوara::core::Vector<T, Allocator>، فيجب أن يتوفر أيضًا تخصص صالح لـstd::hashلنوع العنصرT. وإذا كان هذا التخصص مفقودًا، فسيؤدي ذلك إلى خطأ في الترجمة. - فهرسة غير صالحة في بروتوكول Tuple: يؤدي الوصول إلى
std::tuple_element<I, ara::core::Array<T, N>>بفهرسI >= Nإلى انتهاك الشرط المسبق للقالب وإلغاء عملية الترجمة.
التفسير: يُرجَّح أن تقتصر سيناريوهات الخطأ أساسًا على أخطاء وقت الترجمة في حالات تخصصات الأنواع غير المكتملة أو انتهاكات النطاق الثابت، نظرًا لأن مقتطف المواصفات لا يحدد رموز أخطاء أو واجهات استثناءات لوقت التشغيل. سؤال Q-8cda269c72bd701c (مفتوح)
يستند هذا الدليل حصريًا إلى تخصصات الفئات المُعلن عنها للوحدة core للإصدار R25-11.
خريطة المواضيع
مخطط الفئة
Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.
لا توجد بيانات عناصر لهذا الإصدار
الفئات
Specialization of std::hash (hashing function for ara::core::Monostate) ≙ std::hash
التخصيصات hash< ara::core::Optional< T > hash< ara::core::String > hash< ara::core::StringView > hash< ara::core::Variant< hash< ara::core::Vector< T, Allocator > >
≙ [array]
≙ [array]
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني