我知道我们可以做这样的事情:
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"
}
那么,在不知道函数f1和f2的返回值和参数类型的情况下是否可以呢? 例如,
void f1(){ ... }
int f2(){ ... }
int main(){
A<f1> a1; a1.f();
A<f2> a2; a2.f();
}
谢谢。
最佳答案
在 C++17 中,您可以简单地使用 auto
template <auto F>
class A{
public:
void func(){
F();
}
};
关于c++ - 将函数作为未知类型的类模板参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65093457/