std::result_of 怎么推导std::bind类型
时间: 2023-12-22 18:27:40 浏览: 135
cpp代码-std::bind & function
根据C++标准库的相关文档,可以使用std::result_of来推导std::bind函数返回的可调用对象的返回值类型。具体来说,std::result_of的模板参数应该是std::bind的类型,例如:
```c++
#include <functional>
#include <iostream>
int foo(int a, int b) {
return a + b;
}
int main() {
auto func = std::bind(foo, 1, 2);
std::result_of<decltype(func)&()>::type result;
result = func();
std::cout << result << std::endl; // 输出:3
return 0;
}
```
在上面的例子中,我们使用std::bind创建了一个可调用对象func,它绑定了函数foo和参数1、2。然后,我们使用std::result_of来推导func的返回值类型,具体来说,我们使用decltype(func)&()来获取func的类型,并将其作为std::result_of的模板参数。最后,我们将func执行的结果赋值给result,并输出result的值,即可得到foo(1, 2)的返回值3。
阅读全文