标签:
/************************************************************************//* 测试lambda *//************************************************************************/#include<iostream>#include<functional>class A{public:int i_ =0;void func(int x,int y){auto ff =[this, x, y]{return i_ + x + y;};//捕获了this,否则没法使用类成员变量}};int main(){//[]内为要捕获的外部变量auto f1 =[](int a)->int{return a;};//这是完整的写法,带参数列表,带返回值auto f2 =[](int a){return a +1;};//省略了返回值类型,这个是显而易见的auto f3 =[]{return2;};//没有参数这可以省略不写 int a =0;auto f =[=]{return a;};//捕获所有变量的值,没法修改a,只是传递了值 a++; std::cout << f()<< std::endl;//输出为0int b =2;auto f4 =[&b]{return++b;};//捕获了变量b的引用,对其修改 std::cout << f4()<< std::endl;//配合bind std::function<int(int)> fr =[](int a){return a +9;};auto fr2 = std::bind(fr,4);auto fr3 = std::bind([](int a){return a;},555); std::cout << fr2()<< std::endl; std::cout << fr3()<< std::endl;}标签:
原文地址:http://www.cnblogs.com/dongdongweiwu/p/4743651.html