अज्ञात प्रकार के साथ एक क्लास के टेम्प्लेट paremeter के रूप में पासिंग फ़ंक्शन
Dec 01 2020
मुझे पता है कि हम ऐसा कुछ कर सकते हैं:
void f1(){ printf("1"); }
void f2(){ printf("2"); }
template <void F()>
class A{
public:
void func(){
F();
}
};
int main(){
A<f1> a1; a1.func(); // printing "1"
A<f2> a2; a2.func(); // printing "2"
}
फिर, क्या यह संभव है कि फ़ंक्शन एफ 1 और एफ 2 के रिटर्न और तर्क प्रकारों को जाने बिना? उदाहरण के लिए,
void f1(){ ... }
int f2(){ ... }
int main(){
A<f1> a1; a1.f();
A<f2> a2; a2.f();
}
धन्यवाद।
जवाब
3 Jarod42 Dec 01 2020 at 15:30
C ++ 17 में, आप बस उपयोग कर सकते हैं auto
template <auto F>
class A{
public:
void func(){
F();
}
};