C++的函数也有类型。比如:
void func(int a);
上面的函数的类型是: void(int)
它可以作为模板类型参数,如同普通的类型一样:
template Foo;
Foo foo;
std::function模板就有类似的用法。
我做了一个实验,设计一个函数表,但是是用模板的行式。来测试一下这个特殊的类型定义。
代码如下:
#include
#include
#include
函数类型如同数组类型一样,不能直接作为函数参数,需要转换成指针。
CallFunction 函数这里使用了变长模板参数、万能引用+完美转发惯用法,从而实现了客户端调用接口。