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

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