用作模板类中的参数

我有以下模板类声明:

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;

,和具有不同(但相关)类型的变量pc并且仅当用于实例化模板的功能与所指向的功能同时,才输入上面突出显示sifsigact.sa_handler

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章