#include <functional>
bind函数调用形式:auto newCallable = bind(Callable, arg_list);
其中newCallable是一个可调用对象,arg_list是逗号分割的参数列表,对应传给callable的参数。arg_list中的参数有可能含有_n的名字,n是正整数,表示“占位符”,如_1, _2等等。
#include <iostream>
using namespace std;
void add(int& a, int& b){
++a;
++b;
std::cout << a << ", " << b << std::endl;
}
void demo1(){
int a1 = 1;
int b1 = 2;
auto f1 = std::bind(add, a1, b1);
f1();
std::cout << a1 << ", " << b1 << std::endl;
}
void demo2(){
int a1 = 1;
int b1 = 2;
auto f2 = std::bind(add, a1, std::placeholders::_1);
f2(b1);
std::cout << a1 << ", " << b1 << std::endl;
}
int main(){
demo1(); //绑定参数(值传递)
cout << " " << endl;
demo2(); //未绑定参数(引用传递)
/*输出结果
2, 3
1, 2
2, 3
1, 3
*/
return 0;
}