我知道这是一个简单的问题,但我似乎无法在任何地方找到具体的答案!
在c ++ 11中浏览线程的测试代码,并且不理解此模板函数声明的含义:
packaged_task<int(int)> task1(&myComputation);
不确定'int(int)'在此代码中的含义。我一般都理解传递到括号中的内容&lt; &GT;是传递给模板定义的类型。这是某种类型的铸造吗?
谢谢!
答案 0 :(得分:4)
在此上下文中,int(int)表示函数指针的类型签名,该函数指向一个带有一个参数(int)的函数,并返回一个int。所以,如果我写的话:
int myFunction(int value) {
std::cout << value << std::endl;
}
std::packaged_task<int(int)> myPackagedTask{&myFunction};
现在,packaged_task包含一个指向myFunction的函数指针。接下来,这将是一个错误:
int mySecondFunction(int value, int secondValue) {
std::cout << value << " : " << secondValue << std::endl;
}
std::packaged_task<int(int)> myPackagedTask{&mySecondFunction}; //compile error, mySecondFunction does not match signature int(int)