وراثة القوالب في C++ وبناء النسخ: static_assert محير

2025-06-10
وراثة القوالب في C++ وبناء النسخ: static_assert محير

تتناول هذه المقالة مشكلة محيرة تتعلق بمنشئي النسخ في وراثة القوالب في لغة C++، حيث ترث الفئة `Derived` من الفئة `Base`، التي تم حذف مُنشئ النسخ الخاص بها. ومع ذلك، تُعرّف الفئة `Derived` مُنشئ نسخ خاص بها. حتى وإن حاول هذا المُنشئ نسخ كائن `Base` غير قابل للنسخ، فإن `std::is_copy_constructible` لا تزال تُرجع قيمة true. والسبب في ذلك هو أن المُترجم لا يفحص سوى وجود مُنشئ نسخ غير محذوف، وليس إمكانية إنشائه. ويتناول الكاتب أيضاً الفروقات بين مُنشئي النسخ المُعرّفين بشكلٍ صريح والضمني، وتأثيرات نقل تعريف مُنشئ النسخ خارج السياق.

التطوير بناء النسخ