我有这个代码:
#include <iostream>
#include <functional>
#include <vector>
void fun()
{
std::cout<<"fun";
}
void gun(int)
{
std::cout<<"gun";
}
int main()
{
std::vector<std::function<void(int)>> vec;
vec.push_back(std::bind(fun));
vec.push_back(gun);
vec[0](1);
vec[1](2);
}
Run Code Online (Sandbox Code Playgroud)
你能解释一下绑定功能时如何std::bind返回?std::function<void(int)>void()
如何void()使用void(int)仿函数调用函数?
作为模板参数传递的签名function仅确定_1将绑定多少个占位符()以及哪些类型.
实际函数的调用仅使用绑定函数实际需要的参数数量.实际上,忽略了多余的参数.
另一个更具启发性(?)的例子,从另一方面看这个:
#include <iostream>
#include <functional>
void gun(int i)
{
std::cout<<"gun("<<i<<")";
}
int main()
{
using namespace std::placeholders;
std::bind(gun, _5)("ignore", 3, "and", 4, 43);
}
Run Code Online (Sandbox Code Playgroud)
打印
gun(43)
Run Code Online (Sandbox Code Playgroud)