मेरे पास निम्न कोड है जो संकलित नहीं करता है। यह एक टेम्पलेट वर्ग है कि तर्कटेम्पलेट विधि enable_if विशेषज्ञता
typename std::enable_if<std::is_void<Ret>::value, Ret>::type _on_dispatched() {
// ...
}
typename std::enable_if<!std::is_void<Ret>::value, Ret>::type _on_dispatched() {
// ....
}
मैं पर किस प्रकार Ret है निर्भर करता है एक सदस्य विधि में विशेषज्ञता चाहते लेता में दो कार्य कर रहे हैं।
क्या किसी को कुछ विचार है?
आप कर सकते हैं, अगर भार के में से एक कॉल समय में केवल व्यवहार्य एक है। :) http://liveworkspace.org/code/fd6e5383610d4e0d8fb17c5497991355 – Xeo
@ पोटाटोस्वाटर: वास्तव में, नहीं, यह एक मजाक नहीं था। लिंक देखें, आप बिल्कुल ठीक उसी हस्ताक्षर के साथ एक फ़ंक्शन कर सकते हैं जहां केवल वापसी प्रकार तय करता है कि यह व्यवहार्य है या नहीं। : पी इसके अलावा, बस 'std :: is_void() 'का उपयोग करें, टाइप टाइप्स को' std :: true_type' या 'std :: false_type' से प्राप्त करने के लिए आवश्यक हैं। –
Xeo
बीटीडब्ल्यू, [आप सदस्य को सी ++ 11 में डिफ़ॉल्ट पैरामीटर के साथ टेम्पलेट को फ़ंक्शन कर सकते हैं] (http://liveworkspace.org/code/781d94df5499998947217970c1aebf2a)। – Xeo