function_bind

优势, 何时使用, 基本语法

可调用对象:
函数
函数指针
lambda表达式
bind创建的对象
重载了函数调用运算符的类

不同类型的可调用对象能共享同一种调用形式
调用形式指明了调用返回的类型以及传递给调用的实参类型

如 int(int, int)

bind函数适配器 auto newCallable = bind(callable, arg_list);
arg_list中的参数可能包含形如_n的名字, 其中n是一个整数, 这些参数是占位符, 表示newCallable的参数
名字_n定义在名为placeholders的名字空间中, 这个名字空间又在std名字空间中
using std::placeholders::_1;
using std::placeholders::_2;
using std::placeholders::_3;
std::ref
-> function<int(int, int)>

重载问题->使用函数指针明确调用形式, 传递函数指针

使用function/bind的优势在于不用担心对象的生命周期

f1 = std::bind(&Foo::methodInt, &foo, “hello”) 形参的构造发生在调用时而不是bind的时候
注意形参的生命周期, 它不应该短于f1的生命周期
必要时通过std::bind(&Foo::methodInt, &foo, string(“hello”))来做安全保证