मैंने टेम्पलेट से निपटने के दौरान मुझे एक छोटी सी समस्या पर ठोकर खाई। यहाँ एक उदाहरण है:,टेम्पलेट पैरामीटर के रूप में टेम्पलेटेड फ़ंक्शन पॉइंटर
template<class _returnType, _returnType (*_function)()>
_returnType aliasGetter() { return _function(); }
int getCoolNumber() { return 42; }
int main()
{
std::cout << aliasGetter<int, &getCoolNumber>(); //42
}
इस कोड काम करता है (http://cpp.sh/ यदि आप इसे करने की कोशिश करना चाहते हैं) लेकिन बाद से मैं टेम्पलेट पैरामीटर मैं _returnType आवश्यकता नहीं होनी चाहिए के रूप में एक समारोह सूचक देते हैं, यह समारोह हस्ताक्षर में सही नहीं है, समस्या यह है कि कोई फर्क नहीं पड़ता कि मैं कितनी मेहनत करता हूं, मुझे इस अतिरिक्त टेम्पलेट पैरामीटर से छुटकारा पाने का कोई तरीका नहीं मिल रहा है।
मैं aliasGetter
कैसे बना सकता हूं केवल एक टेम्पलेट पैरामीटर (ऊतक के लिए गेटर के लिए एक सूचक) ले सकता है? यदि यह संभव नहीं है, तो क्यों नहीं?
एक टेम्पलेट पैरामीटर का उपयोग करने और टेम्पलेट तर्क कटौती पर भरोसा करने के बारे में क्या? – WhiZTiM
@WhiZTiM जिसे रन-टाइम पर कॉल करने के लिए फ़ंक्शन पॉइंटर को पास करने की आवश्यकता होगी। –
आपको इसकी आवश्यकता है क्योंकि आपका दूसरा टेम्पलेट पैरामीटर इस पर निर्भर करता है। आप https://functionalcpp.wordpress.com/2013/08/05/function-traits/ के साथ कुछ बना सकते हैं लेकिन मुझे संदेह है कि आप टेम्पलेट पैरामीटर को सहेज लेंगे। – knivil