function, bind和lambda:
bind中使用std::ref和std::cref,bind中默认使用的拷贝,而不是引用,根据实际情况,可使用std::ref和std::cref将参数设置为引用
lambda:
下面我们来总结下所有出现的 lambda 引入符:
[] // 不捕获任何外部变量
[=] // 以值的形式捕获所有外部变量
[&] // 以引用形式捕获所有外部变量
[x, &y] // x 以传值形式捕获,y 以引用形式捕获
[=, &z]// z 以引用形式捕获,其余变量以传值形式捕获
[&, x] // x 以值的形式捕获,其余变量以引用形式捕获
lambda中使用this指针:
对于[=]或[&]的形式,lambda 表达式可以直接使用 this 指针。但是,对于[]的形式,如果要使用 this 指针,必须显式传入:[this]() { this->someFunc(); }();