الوصول إلى أنواع وسيطات مؤشر الدالة في فئة القالب المتغير
تنشأ هذه المشكلة من استعلام سابق يتعلق بإنشاء عامل عام للوظائف ذات الوسيطة العشوائية القوائم. تسمح فئة المعامل المعطاة، Foo، باستدعاء مؤشر دالة بأي عدد من الوسائط. ومع ذلك، المهمة الآن هي استخراج أنواع الوسيطات من مؤشر الدالة داخل مُنشئ Foo.
عند تعريف فئة Foo، يتم تغليف أنواع الوسيطات كـ ARGS... في تعريف مؤشر دالة المُنشئ. على الرغم من أن قيم الوسائط غير متوفرة في وقت الإنشاء، إلا أنه يمكن الوصول إلى أنواعها من خلال مؤشر الوظيفة نفسه.
للكشف عن أنواع الوسائط هذه، يمكن للمرء الاستفادة من فئة function_traits:
template
struct function_traits;
template>
{
// Number of arguments
static const size_t nargs = sizeof...(Args);
// Return type
typedef R result_type;
// Argument types at specified index
template <size_t i>
struct arg
{
typedef typename std::tuple_element<i, std::tuple<Args...>>::type type;
};
};
ضمن مُنشئ Foo، يمكن للمرء الوصول إلى أنواع الوسائط هذه باستخدام function_traits كما يلي:
templateمن خلال استخدام function_traits، يمكن استخراج أنواع الوسائط والاستفادة منها داخل فئة Foo، مما يتيح عمليات معقدة تعتمد على توقيع الوظيفة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3