تُستخدم للإرجاع المتسامح مع الأخطاء لمرجع إلى كائن موجود أو لرمز خطأ حدث.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 8d8a51a8c902المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيمُولَّد بالذكاء الاصطناعيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم للإرجاع المتسامح مع الأخطاء لمرجع إلى كائن موجود أو لرمز خطأ حدث.
تغلف عملية التخصيص ara::core::Result<T&, E> إما مرجعًا غير مالك إلى نتيجة عملية ناجحة من النوع T& ([SWS_CORE_00902]) أو رمز خطأ حدث من النوع E. يتحقق المستخدمون عادةً من وجود قيمة عبر HasValue() ([SWS_CORE_00918]) قبل الوصول إلى الكائن الهدف المشار إليه عبر معاملات إلغاء المرجعية أو Value(). ونظرًا لأن النسخة لا تمتلك الكائن المشار إليه بنفسها، فيُرجح أن يتعين على المتصل التأكد من بقاء هذا الكائن صالحًا في الذاكرة طوال فترة استخدام النتيجة. سؤال Q-48d71186fb35af77 (مفتوح)
السياق
تغلف عملية تخصيص القالب ara::core::Result<T&, E> إما مرجعًا إلى نتيجة عملية ناجحة من النوع value_type ([SWS_CORE_00902]) أو قيمة خطأ من النوع error_type ([SWS_CORE_00903]). وباعتبارها بنية إرجاع قياسية في الوحدة core، فإنها تتيح برمجة متينة ضد الأخطاء دون الاستخدام الإلزامي لاستثناءات C++ في المسار المعتاد. ووفقًا للمواصفة، يفرض التنفيذ في وقت الترجمة أن يتطابق نوع الخطأ E مع النوع ara::core::ErrorCode؛ ويؤدي أي تعيين مخالف إلى خطأ في الترجمة. ويشمل شركاء التفاعل الخدمات المزودة للبيانات، والمكونات المستدعية لفحص النتائج، بالإضافة إلى الكائن الهدف المدار خارجيًا، والذي يتم الوصول إليه مباشرة عبر المرجع المقترن.
فيما يتعلق بملكية الموارد، تربط Result<T&, E> مرجعًا فقط ولا تتولى ملكية أو إدارة دورة حياة الكائن الهدف المشار إليه. لذلك يُرجح أن يتعين على المتصل ضمان بقاء الكائن الهدف صالحًا طوال فترة وجود نسخة Result. سؤال (مفتوح) وتتم تغييرات الحالة أثناء التشغيل عبر معاملات الإسناد ([SWS_CORE_00914]، [SWS_CORE_00915])، التي تعيد ربط المرجع الداخلي بالهدف الجديد أو تنقل خطأً. بالإضافة إلى ذلك، تنقل EmplaceError[SWS_CORE_00916] النسخة مباشرة إلى حالة خطأ، بينما تبادل Swap[SWS_CORE_00917] محتويات نسختين. ويتصرف الهادم [SWS_CORE_00913] بشكل بديهي (trivial)، بشرط أن يكون E قابلاً للهدم بشكل بديهي. وتكون عمليات القراءة المتوازية للقيمة أو الخطأ آمنة عبر الخيوط، بينما العمليات المغيرة للحالة مثل الإسنادات أو Swap أو EmplaceError ليست آمنة عبر الخيوط.
العمليات الأحادية (Monadic): باستخدام Bind()[SWS_CORE_00941] يتم تطبيق دالة تحويل على المرجع وتغليف النتيجة، بينما يتم تمرير الأخطاء تلقائيًا. وتستدعي Resolve() ([SWS_CORE_00939]، [SWS_CORE_00940]) دالة بديلة عند حدوث أخطاء، توفر مرجعًا متوافقًا.
معالجة الاستثناءات: تطلق الاستدعاءات ValueOrThrow() ([SWS_CORE_00938]، [SWS_CORE_00949]) في حالة الخطأ الاستثناء المقترن بالخطأ؛ ولا تشارك في حل التحميل الزائد إلا إذا كانت استثناءات ++C ممكّنة في المترجم.
يستند هذا الدليل إلى مواصفة AUTOSAR Adaptive Platform R25-11 (الوحدة core). وقد جرى إعداده وتنسيقه آليًا لصالح autodocs.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 58ad905509b5المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيمُولَّد بالذكاء الاصطناعيgemini-3.8-flash-medium · 2026-10-14
تتيح إرجاع مرجع لكائن عند النجاح أو رمز خطأ عند الفشل دون إجراء نسخ للقيمة.
توفر الفئة ara::core::Result<T &, E> غلافاً متخصصاً لإرجاع مرجع لكائن من النوع T& عند نجاح العمليات أو رمز خطأ من النوع E عند إخفاقها دون الحاجة لنسخ القيمة الأصلية [SWS_CORE_00902]. ويتحقق المستخدم من حالة الكائن عبر HasValue قبل استرداد المرجع بواسطة Value، مع ضرورة الالتزام بشروط الاستدعاء لتجنب الانتهاك ResultWithNoValueViolation في حال عدم احتواء الكائن على قيمة [SWS_CORE_00918]، [SWS_CORE_00924].
السياق والمسؤولية
تمثل الفئة ara::core::Result<T &, E> تخصيصاً لقالب فئة النتائج العامة لتمثيل مراجع أنواع القيم (Reference Types) بدلاً من تخزين نسخ منها، حيث يُعرّف الاسم المستعار للنوع value_type بصفته T&[SWS_CORE_00902] والاسم المستعار error_type بصفته E[SWS_CORE_00903]. وتتمثل مسؤوليتها الأساسية في نقل مرجع صالح إلى نتيجة عملية ناجحة أو حمل رمز خطأ صريح من النوع E عند الفشل، مع فرض شرط صارم على مستوى الترجمة يقضي بوجوب تطابق E مع ara::core::ErrorCode تحت طائلة خطأ ترجمة برمجي. يتيح هذا التخصيص للمكونات البرمجية تجنب التكاليف التشغيلية المرتبطة بنسخ أو نقل الكائنات الكبيرة مع الحفاظ على نمط موحد لمعالجة الأخطاء دون الحاجة لاستخدام آليات الاستثناءات.
دورة الحياة وإدارة المراجع
تبدأ دورة حياة كائن النتيجة إما بربطه بمرجع صالح لكائن موجود من النوع T عبر دالة البناء المتخصصة أو الدالة المصنعية FromValue[SWS_CORE_00904]، [SWS_CORE_00908]؛ حيث يشترط النظام البرمجي بشكل صارم أن تكون الوسيطة قيمة يسارية (lvalue) وتصبح بنية البرنامج خاطئة (ill-formed) خلاف ذلك. بدلاً من ذلك، يمكن تهيئة الكائن بحالة خطأ من خلال دوال البناء الصريحة أو التوابع المصنعية FromError التي تقبل قيم خطأ يسارية أو يمينية أو وسائط إنشاء في الموضع [SWS_CORE_00905]، [SWS_CORE_00906]، [SWS_CORE_00907]، [SWS_CORE_00909]، [SWS_CORE_00910].
يدعم الكائن عمليات الإنشاء والتعيين بالنقل والنسخ [SWS_CORE_00911]، [SWS_CORE_00912]، [SWS_CORE_00914]، [SWS_CORE_00915]. وعند نسخ أو نقل كائن يحتوي على مرجع، يُعاد ربط المرجع الداخلي بالمرجع المشار إليه من الكائن الآخر، بينما تُنسخ بيانات الخطأ أو تُنقل إذا كان الكائن الآخر يحتوي على خطأ. كما يمكن إعادة إنشاء الخطأ في موضعه بواسطة EmplaceError[SWS_CORE_00916] أو تبديل المحتويات مع كائن آخر عبر Swap[SWS_CORE_00917]. وعند نهاية دورة الحياة، يكون هادم الفئة ~Result بسيطاً (trivial) إذا كان نوع الخطأ E قابلاً للهدم البسيط [SWS_CORE_00913]؛ وتفسير ذلك أن هادم الفئة لا يقوم بهدم الكائن المشار إليه T لأن الكائن يحتفظ بمرجع فقط ولا يمتلك القيمة ذاتها، ما يتطلب من المستدعي ضمان استمرار حياة T طوال فترة استخدام النتيجة.
يوفر النموذج أيضاً دوال المعالجة الوظيفية والتسلسل، ومن أبرزها Bind التي تطبق دالة استدعاء (Callable) على المرجع وتُرجع كائن نتيجة جديداً من النوع المحوّل أو تنسخ الخطأ القائم إذا لم تحتوِ النتيجة على قيمة [SWS_CORE_00941]. بالإضافة إلى ذلك، تمكن دالة Resolve من استرجاع المرجع أو استدعاء دالة بديلة عند وجود خطأ لتوفير مرجع متوافق من النوع T&[SWS_CORE_00939]، [SWS_CORE_00940]، بينما تتيح دالة ValueOr إرجاع نسخة من القيمة المشار إليها أو قيمة بديلة محددة [SWS_CORE_00933]، [SWS_CORE_00934].
يحدد المعيار انتهاكات تشغيلية صريحة (Violations) عند سوء استخدام الواجهات البرمجية؛ إذ يؤدي استدعاء Value أو operator* أو operator-> عندما لا يحتوي الكائن على قيمة إلى وقوع الانتهاك ResultWithNoValueViolation[SWS_CORE_00920]، [SWS_CORE_00922]، [SWS_CORE_00924]. وبالمثل، يُعد استدعاء Error عندما لا يحتوي الكائن على خطأ انتهاكاً من نوع ResultWithNoErrorViolation[SWS_CORE_00928]، [SWS_CORE_00929]، [SWS_CORE_00930].
لتفادي هذه الانتهاكات، يمكن فحص وجود الخطأ عبر CheckError[SWS_CORE_00937]، أو استخراجه بأمان داخل غلاف اختياري عبر Err[SWS_CORE_00931]، [SWS_CORE_00932]، أو استخدام ErrorOr لتوفير خطأ افتراضي بديل [SWS_CORE_00935]، [SWS_CORE_00936]. وفي بيئات التشغيل التي تفعل استثناءات C++، يمكن استدعاء ValueOrThrow التي تُرجع المرجع في حال النجاح أو تقوم برمي الاستثناء المقترن برمز الخطأ عند الفشل، مع ملاحظة خروجها من تسوية التحميل الزائد (overload resolution) إذا كانت الاستثناءات معطلة في المترجم [SWS_CORE_00938]، [SWS_CORE_00949].
تم إنشاء هذا الدليل آلياً استناداً إلى متطلبات ومعايير AUTOSAR Adaptive Platform ومواصفات ara::core المعتمدة.
Apply the given Callable to the value of this instance, and return a new Result with the result of the call. The Callable is expected to be compatible to one of these two interfaces: • Result<XXX, E> f(const T&); • XXX f(const T&); meaning that the Callable either returns a Result<XXX> or a XXX directly, where XXX can be any type that is suitable for use by class Result. The return type of this function is decltype(f(Value())) for a template argument F that returns a Result type, and it is Result<decltype(f(Value())), E> for a template argument F that does not return a Result type. If this instance does not contain a value, a new Result<XXX, E> is still created and returned, with the original error contents of this instance being copied into the new instance.
Return the contained error or the given default error. If *this contains an error, it is returned. Otherwise, the specified default error is returned, static_cast’d to E
Return the referred-to value or return the result of a function call. If *this contains a value, it is returned. Otherwise, the specified callable is invoked and its return value which is to be compatible to type T& is returned from this function. The Callable is expected to be compatible to this interface: const T& f(const E&);
التحميلات الزائدةResolve2
template <typename F> const T & Resolve (F &&f) const;SWS_CORE_00939
template <typename F> T & Resolve (F &&f) const;SWS_CORE_00940
Return a copy of the referred-to value or the given default value. If *this contains a value, it is returned. Otherwise, the specified default value is returned, static_ cast’d to T.
Copy-assignment operator If other contains a value, the contained reference is rebound to the referee of other. If other contains an error, the contained error is copy-constructed or copy-assigned from the one contained by other.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 78ad946285a2المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تتيح الدالة العضو const T * operator-> () const noexcept وصولاً متزامنًا للقراءة إلى القيمة المشار إليها لكائن ara::core::Result<T &, E>[SWS_CORE_00922]. لا تقبل الدالة أي وسائط، وتوفر كقيمة إرجاع مؤشرًا ثابتًا (const T *) إلى الكائن الهدف المشار إليه [SWS_CORE_00922]. للاستخدام، يجب تضمين ملف الرأس #include "ara/core/result.h"[SWS_CORE_00922].
معالجة الأخطاء
تم التصريح عن العملية كـ noexcept وتمتلك الخاصية exception safe[SWS_CORE_00922]. إذا كان الكائن لا يحتوي على أي قيمة، فسيحدث انتهاك للشرط المسبق (Violation) ResultWithNoValue[SWS_CORE_00922]. لذلك، يجب على المتصلين التأكد قبل إلغاء المرجع من أن النسخة تحمل بالفعل قيمة صالحة.
التزامن والقيود
تم تحديد الدالة على أنها thread-safe[SWS_CORE_00922]. وبما أنها دالة عضو ثابتة (const)، فإن الوصول المتوازي للقراءة إلى النسخة نفسها يكون آمناً. ومع ذلك، يخضع الوصول إلى الكائن الهدف نفسه لضمانات أمان مؤشرات الترابط الخاصة بالنوع T.
تفاعل
يمثل المعامل النظير الثابت (const) للتحميل الزائد غير الثابت T * operator-> () noexcept[SWS_CORE_00923]. وبينما يُرجع المتغير غير الثابت مؤشراً قابلاً للتعديل T*[SWS_CORE_00923]، يفرض هذا الإصدار وصولاً غير قابل للتغيير إلى النسخة المشار إليها.
تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على مواصفة AUTOSAR R25-11.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 798448906bb1المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تتيح دالة العضو operator-> الوصول المباشر إلى القيمة المشار إليها لنسخة من ara::core::Result<T&, E> وفقاً لـ [SWS_CORE_00923]. تتطلب الدالة ملف الرأس #include "ara/core/result.h"، ولا تقبل أي معلمات، وتُرجع مؤشراً من النوع T* إلى القيمة المتضمنة أو المشار إليها. يتم تنفيذ الاستدعاء بشكل متزامن وتم التصريح عنه بـ noexcept.
معالجة الأخطاء والشروط الحدية
إذا كان الكائن لا يحتوي على أي قيمة في وقت الوصول، فسيحدث انتهاك للمواصفة في شكل ResultWithNoValue-Violation[SWS_CORE_00923]. لم يتم تحديد رسائل خطأ معينة لـ DET أو DEM لدالة العضو هذه. فيما يتعلق بالتزامن والتسامح مع الأخطاء، تم تصنيف المعامل كـ thread-safe بالإضافة إلى exception safe[SWS_CORE_00923]. يُفترض أن يتحقق المتصلون قبل الاستدعاء من أن النسخة تحمل بالفعل قيمة صالحة لتجنب إطلاق الانتهاك. سؤال Q-a4b13cd34a40eb19 (مفتوح)
تفاعل
بالتكامل مع القالب ara::core::Result<T&, E>، تُكمل دالة العضو غير الثابتة هذه التحميل الزائد الثابت المقابل const T * operator-> () const noexcept من [SWS_CORE_00922]، والذي يخضع لنفس قواعد الحماية، ولكنه يوفر مؤشراً للقراءة فقط (const T*).
تم إنشاء ملاحظة الاستخدام هذه تلقائيًا بواسطة ذكاء اصطناعي استنادًا إلى المواصفة.
Apply the given Callable to the value of this instance, and return a new Result with the result of the call. The Callable is expected to be compatible to one of these two interfaces: • Result<XXX, E> f(const T&); • XXX f(const T&); meaning that the Callable either returns a Result<XXX> or a XXX directly, where XXX can be any type that is suitable for use by class Result. The return type of this function is decltype(f(Value())) for a template argument F that returns a Result type, and it is Result<decltype(f(Value())), E> for a template argument F that does not return a Result type. If this instance does not contain a value, a new Result<XXX, E> is still created and returned, with the original error contents of this instance being copied into the new instance.
Return the contained error or the given default error. If *this contains an error, it is returned. Otherwise, the specified default error is returned, static_cast’d to E
Return the contained error or the given default error. If *this contains an error, it is std:: move’d into the return value. Otherwise, the specified default error is returned, static_cast’d to E
Build a new Result from an error that is constructed in-place from the given arguments. This function shall not participate in overload resolution unless: std::is_constructible<E, Args&&...>::value is true, and • the first type of the expanded parameter pack is not E, and • the first type of the expanded parameter pack is not a specialization of Result
template <typename F> const T & Resolve (F &&f) const;
Return the referred-to value or return the result of a function call. If *this contains a value, it is returned. Otherwise, the specified callable is invoked and its return value which is to be compatible to type T& is returned from this function. The Callable is expected to be compatible to this interface: const T& f(const E&);
Return the referred-to value or return the result of a function call. If *this contains a value, it is returned. Otherwise, the specified callable is invoked and its return value which is to be compatible to type T& is returned from this function. The Callable is expected to be compatible to this interface: T& f(const E&);
Return a copy of the referred-to value or the given default value. If *this contains a value, it is returned. Otherwise, the specified default value is returned, static_ cast’d to T.
Return a copy of the referred-to value or the given default value. If *this contains a value, it is returned. Otherwise, the specified default value is returned, static_ cast’d to T.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 81dc031902adالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تتيح دالة العضو المتزامنة ValueOrThrow للتخصيص القالبي ara::core::Result<T &, E> الوصول إلى القيمة المتضمنة ([SWS_CORE_00938]). وعند نجاح العملية، تُرجع مرجعًا ثابتًا (const T &) إلى هدف المرجع المغلف.
إذا كان الكائن يمثل حالة خطأ، فإن الدالة ترمي الاستثناء المقترن بالخطأ المحدد (noexcept(false)) ([SWS_CORE_00938]). تصنف المواصفة أمان العملية من الاستثناءات صراحةً على أنها غير آمنة من الاستثناءات (not exception safe) ([SWS_CORE_00938]).
فيما يتعلق بالتزامن، تم التصريح عن الدالة بأنها آمنة لخيوط التنفيذ ([SWS_CORE_00938]). يخص أحد الشروط الحدية الأساسية تكوين البناء: إذا تم تعطيل استثناءات C++ في سلسلة أدوات المترجم، فإن ValueOrThrow لا تشارك في حل التحميل الزائد ([SWS_CORE_00938]).
داخل ملف الرأس ara/core/result.h، تشكل الدالة النظير الثابت للتحميل الزائد للمرجع غير الثابت [SWS_CORE_00949]. بالنسبة لأنواع القيم العادية، تتوفر تحميلات زائدة مماثلة لـ Lvalues وRvalues ([SWS_CORE_00766]، [SWS_CORE_00769]، [SWS_CORE_00778])، بينما تم تحديد تحميل زائد بدون قيمة إرجاع لـ ara::core::Result<void, E> ([SWS_CORE_00866]).
تم إنشاء ملاحظة الاستخدام هذه تلقائيًا بناءً على المواصفة R25-11.
Return a reference to the contained value or throw an exception.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: cc4ce28e1dcfالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم دالة العضو ValueOrThrow للتخصيص القالبي ara::core::Result<T&, E> للوصول المتزامن إلى قيمة المرجع المتضمنة [SWS_CORE_00949]. ولا تقبل أي معلمات وتُرجع مرجعًا غير ثابت T& إلى القيمة المخزنة [SWS_CORE_00949].
إذا لم تكن هناك قيمة في الكائن بل خطأ، فإن العملية تكون غير آمنة من الاستثناءات (not exception safe) وتطلق استثناءً من النوع التابع للخطأ (noexcept(false)) [SWS_CORE_00949]. يتمثل أحد الشروط الحدية الأساسية للاستخدام في أن الدالة لا تشارك في حل التحميل الزائد إذا تم تعطيل استثناءات C++ في سلسلة أدوات المترجم [SWS_CORE_00949].
فيما يتعلق بالتزامن، تم تحديد الاستدعاء على أنه آمن لخيوط التنفيذ [SWS_CORE_00949]. داخل التخصيص للمراجع ara::core::Result<T&, E>، يتوفر كمتغير ثابت التحميل الزائد [SWS_CORE_00938]، والذي يقدم const T&. يكمل هذا السلوك التحميلات الزائدة للقالب الأساسي ara::core::Result لمراجع lvalue [SWS_CORE_00778] ومراجع const-lvalue [SWS_CORE_00766] ومراجع rvalue [SWS_CORE_00769] بالإضافة إلى التخصيص لـ void[SWS_CORE_00866].
تم إنشاء ملاحظة الاستخدام هذه تلقائياً بناءً على مواصفة AUTOSAR.
Copy-assignment operator If other contains a value, the contained reference is rebound to the referee of other. If other contains an error, the contained error is copy-constructed or copy-assigned from the one contained by other.
Move-assignment operator If other contains a value, the contained reference is rebound to the referee of other. If other contains an error, the contained error is move-constructed or move-assigned from the one contained by other.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني