C 11: وظيفة الاسم المستعار
في لغة C، يمكن استخدام الكلمة الأساسية المستخدمة لإنشاء اسم مستعار للفئة. ومع ذلك، نفس الوظيفة غير متاحة مباشرة للوظائف. تستكشف هذه المقالة مسألة ما إذا كان الاسم المستعار للوظيفة ممكنًا وتوفر حلاً باستخدام إعادة التوجيه المثالي.
الهدف: لتحديد ما إذا كان من الممكن إنشاء اسم مستعار لوظيفة في C، وإذا كان الأمر كذلك، للعثور على الطريقة الأنظف لإنجاز هذا.
بيان المشكلة:ضع في اعتبارك الكود التالي:
namespace bar
{
void f();
}
using g = bar::f; // خطأ: 'f' في مساحة الاسم 'bar' لا يسمي نوعًاusing g = bar::f; // error: ‘f’ in namespace ‘bar’ does not name a type
لإنشاء اسم مستعار للوظيفة، يمكننا استخدام مجموعة من القوالب وإعادة التوجيه المثالية . فيما يلي مثال لكيفية تحقيق ذلك:
قالب
template
auto g(Args&&... args) -> decltype(f(std::forward(args)...)) {
return f(std::forward(args)...);
}
ملاحظة:
هذا الحل يعمل أيضًا مع الوظائف المحملة بشكل زائد وقوالب الوظائف، مما يضمن استدعاء الوظيفة الصحيحة بناءً على الوسائط المقدمة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3