में टेम्पलेट मेटाप्रोग्रामिंग का उपयोग करके फ़ंक्शन प्रकार से कॉलिंग सम्मेलन निकालना यह एक काफी लंबा शॉट है, क्योंकि मुझे यकीन नहीं है कि यह संभव है, लेकिन हो सकता है कि टेम्पलेट मेटाप्रोग्रामिंग में मेरे से अधिक अनुभवी कोई मुझे प्रबुद्ध करे।सी ++
मैं एक स्वचालित lua समारोह बाध्यकारी प्रणाली का उपयोग करते हुए टेम्पलेट्स समारोह प्रकार निकालने आंशिक विशेषज्ञता का उपयोग कर लिख रहा हूँ:
template<typename T, T FUNCTION> class Function_c;
template<typename R, R (*FUNCTION)()> class Function_c<R (*)(), FUNCTION>; //specialized version
समस्या है, यह मेरे सम्मेलन बुला समारोह नहीं बताता है, तो (VS2012 में 32 बिट्स) यह __stdcall के लिए संकलित नहीं होगा, और यह __fastcall के साथ क्रैश हो जाएगा। मैं किसी विशेष बुला सम्मेलन से निपटने के लिए एक और विशेष संस्करण बना सकते हैं, जैसे:
template<typename R, R (__stdcall *FUNCTION)()> class Function_c<R (__stdcall *)(), FUNCTION>;
लेकिन क्रमपरिवर्तन की संख्या हाथ से बाहर निकलना शुरू कर रहा है: पैरामीटर बार संख्या के 2 (वैश्विक & सदस्य कार्यों) बार अधिकतम संख्या सम्मेलन बुलावा
तो मैं सोच रहा हूं कि कॉलिंग सम्मेलन को टेम्पलेट पैरामीटर के रूप में प्राप्त करने का कोई तरीका है (शायद नहीं, क्योंकि यह वास्तव में एक प्रकार नहीं है) प्रतिलिपि बनाने की मात्रा को कम करने के लिए।