以下是关于C++中异步任务的演示文稿中的一些代码
template <class T> class Future<T>{
//something
void foo(std::function<void(T)> cb);
//something
};
Run Code Online (Sandbox Code Playgroud)
什么void(T)
意思?
什么
void(T)
意思?
这指定了一个函数类型; 具体来说,一个函数采用类型的单个参数T
,并且不返回任何内容.通常,复杂类型的类型说明符看起来像它们对应的变量声明,但没有变量名称:
void f(T); // declare a function
void(T) // specifier for a function type
int a[42]; // declare an array
int[42] // specifier for an array type
Run Code Online (Sandbox Code Playgroud)
在这种情况下,函数类型用于指定函数调用运算符的签名std::function
:
void operator()(T);
Run Code Online (Sandbox Code Playgroud)
这样函数对象可以像使用该类型的函数一样使用:
T some_t;
cb(some_t); // usable like a function taking `T`
Run Code Online (Sandbox Code Playgroud)