gpt4 book ai didi

c++ - 作为模板类中的参数的函数

转载 作者:行者123 更新时间:2023-11-28 02:48:47 24 4
gpt4 key购买 nike

我有以下模板类声明:

template<void f(int)>
class A{
public:
A(){
struct sigaction sigact;
...
if(sigact.sa_handler != f){
...
}
};
}

你能告诉我这种类型的模板叫什么吗?这个模板有什么好处?此类声明为安装作为 f(int) 传递的信号处理程序。每当我们创建此类的实例时,都会安装信号处理程序。我了解函数模板和类模板。这是什么模板?我不知道为什么这样做有什么好处?

最佳答案

模板是参数化类型。在您带来的案例中,名称 A 指的是一个类型族,一个类型对应于您传递给它的 void f(int) 形式的每个函数。因此,给出以下声明:

void print_int(int x);
void close_file(int x);
void handle_signal(int x);

A<print_int> p;
A<close_file> c;
A<handle_signal> s;

变量 pcs 具有不同(但相关)的类型和 if block 仅当用于实例化模板的函数sigact.sa_handler 指向的函数相同时,才会输入上面突出显示的函数。

关于c++ - 作为模板类中的参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com