ऐसा लगता है कि मैं फ़ंक्शन-पॉइंटर फ़ंक्शन द्वारा टेम्पलेट किए गए टेम्पलेट पैरामीटर के रूप में नो-कैप्चर लैम्ब्डा पास नहीं कर सकता। क्या मैं इसे गलत तरीके से कर रहा हूं, या यह असंभव है?फ़ंक्शन-पॉइंटर फ़ंक्शन द्वारा टेम्पलेट किए गए टेम्पलेट पैरामीटर के रूप में लैम्ब्डा को पास करना
#include <iostream>
// Function templated by function pointer
template< void(*F)(int) >
void fun(int i)
{
F(i);
}
void f1(int i)
{
std::cout << i << std::endl;
}
int main()
{
void(*f2)(int) = [](int i) { std::cout << i << std::endl; };
fun<f1>(42); // THIS WORKS
f2(42); // THIS WORKS
fun<f2>(42); // THIS DOES NOT WORK (COMPILE-TIME ERROR) !!!
return 0;
}
'std :: function' का उपयोग करें। – 101010
f2 एक चर-रनटाइम पैरामीटर है। टेम्पलेट्स को समय पैरामीटर (स्थिरांक और प्रकार) बनाने की आवश्यकता होती है। कॉन्स जोड़ने का प्रयास करें, लेकिन यह शायद काम नहीं करेगा। – Hcorg