在c++14中,允许在lambda表达式的形参列表中使用auto
捕获这个概念,只针对于在创建lambda表达式的作用域内可见的非静态局部变量(包括形参),成员变量是不能被捕获到的
广义lambda捕获
c++14中引入了广义lambda捕获这个概念
vector<function<bool(int)>> g;
class CT
{
public:
void push_g()
{
g.push_back([abc=m_tmpval](int mv){
if(mv%abc==0)return true;
return false;
})
}
private:
int m_tmpval=10;
};
广义捕获就是为了防止对象被删除后,仍然调用lambda函数
静态局部变量
捕获这种事,是不包括静态局部变量的,也就是说,静态局部变量不能被捕获,在lambda表达式中对静态变量的使用有点类似于引用捕获这种效果。