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