<int(int)>在函数模板中的含义是什么?

时间:2017-05-15 23:33:54

标签: c++11 templates

我知道这是一个简单的问题,但我似乎无法在任何地方找到具体的答案!

在c ++ 11中浏览线程的测试代码,并且不理解此模板函数声明的含义:

packaged_task<int(int)> task1(&myComputation);

不确定'int(int)'在此代码中的含义。我一般都理解传递到括号中的内容&lt; &GT;是传递给模板定义的类型。这是某种类型的铸造吗?

谢谢!

1 个答案:

答案 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)