c++ - 将函数作为未知类型的类模板参数传递

标签 c++ templates

我知道我们可以做这样的事情:

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/

相关文章:

c++ - C++ 中的变量初始化

c++ - 特质和政策有什么区别?

c++ - 模板函数调用类中的 protected 方法?

C++ 在不知道其参数的情况下保留对模板实例的引用

c++ - 可理解的竞争条件错误导致安全漏洞

c++ - 从非托管调用托管代码时发生 StackoverflowException

c - 尝试在 C 中制作模板

django - 如何获取上传到ima​​gefield的文件的文件名?

python - 狮身人面像模板

c++ - 将 '>>' 与自己的类(class)交友