是否可以在不使用 typedef 的情况下将函数指针作为模板参数传递?

template<class PF>
class STC {
    PF old;
    PF& ptr;
public:
    STC(PF pf, PF& p)
        : old(*p), ptr(p)
    {
        p = pf;
    }
    ~STC() {
        ptr = old;
    }
};

void foo() {}
void foo2() {}

int main() {
    void (*fp)() = foo;
    typedef void (*vfpv)();
    STC<vfpv> s(foo2, fp); // possible to write this line without using the typedef?
}

最佳答案

是的:
STC< void (*)() > s(foo2, fp); // like this
这与采用 typedef 声明并删除 typedef 关键字和名称相同。

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

10-11 17:54