नीचे दिए गए कोड उदाहरण में, foo
पर कॉल काम करता है, जबकि bar
पर कॉल विफल हो जाता है।एक फ़ंक्शन को एक स्पष्ट टेम्पलेट पैरामीटर के रूप में पास करें
अगर मैं bar
पर कॉल पर टिप्पणी करता हूं, तो कोड संकलित करता है, जो मुझे bar
की परिभाषा बताता है ठीक है। तो bar
सही तरीके से कैसे कहा जाएगा?
#include <iostream>
using namespace std;
int multiply(int x, int y)
{
return x * y;
}
template <class F>
void foo(int x, int y, F f)
{
cout << f(x, y) << endl;
}
template <class F>
void bar(int x, int y)
{
cout << F(x, y) << endl;
}
int main()
{
foo(3, 4, multiply); // works
bar<multiply>(3, 4); // fails
return 0;
}
यह भी देखें [फ़ंक्शन तर्क टेम्पलेट के रूप में पारित किया गया] [https://stackoverflow.com/q/1174169/608639)। – jww