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

هل التعرج الوظيفي ممكن في C++ 11؟

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

Is Function Aliasing Possible in C  11?

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

لإنشاء اسم مستعار للوظيفة، يمكننا استخدام مجموعة من القوالب وإعادة التوجيه المثالية . فيما يلي مثال لكيفية تحقيق ذلك:
قالب auto g(Args&&... args) -> decltype(f(std::forward(args)...)) { return f(std::forward(args)...);

template 
auto g(Args&&... args) -> decltype(f(std::forward(args)...)) {
  return f(std::forward(args)...);
}

ملاحظة:

هذا الحل يعمل أيضًا مع الوظائف المحملة بشكل زائد وقوالب الوظائف، مما يضمن استدعاء الوظيفة الصحيحة بناءً على الوسائط المقدمة.

بيان الافراج أعيد طبع هذه المقالة على: 1729666346 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3