"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا كانت عمليات تنفيذ النقل الافتراضية غائبة في مسودات C++ 11 المبكرة؟

لماذا كانت عمليات تنفيذ النقل الافتراضية غائبة في مسودات C++ 11 المبكرة؟

تم النشر بتاريخ 2024-11-19
تصفح:852

Why Were Default Move Implementations Absent in Early C  11 Drafts?

لماذا غابت عمليات تنفيذ النقل الافتراضية عن مسودات C 11 المبكرة؟

في الإصدارات المبكرة من معيار C 11، كان التوليد الضمني لمنشئي النقل ومشغلي المهام أمرًا ضروريًا. موضوع للنقاش. أدى هذا إلى تغييرات في المسودات اللاحقة، مما أدى إلى السلوك التالي في المترجمين المتاحين حاليًا:

دلالات النقل الضمني

منذ إصدار نوفمبر لمعيار C (N3225)، مُنشئات النقل الضمني والتخصيص يمكن إنشاء عوامل التشغيل بالشروط التالية:

  • لا تحتوي الفئة على مُنشئ نسخة معلن من قبل المستخدم.
  • لا تحتوي الفئة على مشغل تعيين نسخة معلن من قبل المستخدم.
  • لا تحتوي الفئة على مشغل مهمة نقل معلنة من قبل المستخدم.
  • لا تحتوي الفئة على أداة إتلاف معلنة من قبل المستخدم.
  • هذه الخطوة لن يتم تعريف المنشئ ضمنيًا على أنه محذوف.

شرح الغياب في المسودات المبكرة

قرار عدم التضمين كانت عمليات تنفيذ مُنشئ/تعيين النقل الافتراضي في المسودات المبكرة نتيجة للمخاوف بشأن احتمال حدوث ارتباك وسلوك غير متوقع. ومع ذلك، فقد عالجت المراجعات اللاحقة هذه المخاوف من خلال تشديد شروط إنشاء النقل الضمني.

الحل البديل

إذا كنت تبحث عن طريقة للاستفادة من دلالات النقل دون كتابة منشئي النقل/مشغلي التعيين الصريحين ، يمكنك استخدام [ماكرو GManNickG](https://stackoverflow.com/a/12316884/8674521). ينشئ هذا الماكرو دلالات النقل الضرورية لفصلك.

من خلال تطبيق دلالات النقل، يمكنك إلغاء الاشتراك في توفير وظيفة عضو المبادلة أيضًا.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3