اختياري في لغة C: لماذا لا يوجد تخصص للأنواع المرجعية؟
على الرغم من وجود تخصص للأنواع المرجعية في المكتبات مثل Boost، فإن C مكتبة القياسية std::اختياري لا يوفر مثل هذه الميزة. أثار هذا القرار تساؤلات حول الأساس المنطقي له والآليات البديلة المحتملة.
الأساس المنطقي وراء الإغفال
أثناء مناقشة n3406 (المقترح الاختياري)، أثيرت المخاوف فيما يتعلق بإدراج المراجع الاختيارية. وإدراكًا لهذه الاعتراضات، قام مؤلفو n3527 بفصل المراجع الاختيارية إلى اقتراح مساعد لتعزيز احتمال قبول القيم الاختيارية القياسية. في حين لم يتم تضمين الاختياري في النهاية في C 14 بسبب عوامل غير ذات صلة، فإن عدم موافقة اللجنة على المراجع الاختيارية لم يكن مشكلة. لا تقدم تخصصًا لأنواع المراجع، وتفتقر المكتبة القياسية إلى بنية مكافئة توفر دلالات "المرجع إلى كائن موجود محتمل". قد يترك هذا المطورين يبحثون عن بدائل:
Auto_ptr: أثناء إهماله في C 11، يمكن لـ std::auto_ptr محاكاة مرجع باستخدام دلالات الملكية. ومع ذلك، لا يُنصح باستخدامه بسبب مشكلات مثل تسرب الذاكرة.
boost::Optionalتنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3