मैं नए C++ मानक में variadic टेम्पलेट्स के साथ चारों ओर खेल रहे हैं और एक नक्शे के समारोह के साथ आया था (हेडर बाहर रखा गया decs का उपयोग कर +):C++ समारोह नक्शा कार्यान्वयन
template<typename T>
T square(T i)
{
return i * i;
}
template <typename T, typename... Ts>
const tuple<Ts...> map(const T f, const Ts...args)
{
return make_tuple(f(args)...);
}
int main(int c, char *argv[])
{
tuple<int, int> t;
int (*fp) (int) = square;
t = map(fp, 6, 8);
cout <<get<0>(t) <<endl;
cout <<get<1>(t) <<endl;
return 0;
}
कौन सा काम करता है। जब तक सभी तर्क नक्शे के लिए एक ही प्रकार के होते हैं।
tuple<int, float> t;
t = map(square, 6, 8.0f);
जीसीसी 4.4 रिपोर्ट:: मैं मुख्य एक से थोड़ा अधिक सामान्य रूप का उपयोग करने को बदलते हैं
In function ‘int main(int, char**)’:
error: no matching function for call to ‘map(<unresolved overloaded function type>, int, float)’
कोई भी विचार कैसे इस काम करने के लिए?
क्या आप नेमस्पेस std का दुरुपयोग कर रहे हैं; '? 'Tuple' कहां से आता है? –
@ केरेकस्क: वह कहता है कि उसने 'डीक का उपयोग करके' हटा दिया, जो मुझे 'दुर्व्यवहार का उपयोग करके स्पष्ट' लगता है। –