一道lambda表达式题目
2017-02-05 21:17 ttylinux 阅读(324) 评论(0) 编辑 收藏 举报#include <iostream> #include <functional> using namespace std; auto Pair = [](auto u, auto v) { return [=](auto f) { return f(u, v); }; }; //auto First = todo; //auto Second = todo; auto First = [](auto p){ //p就是对应于t return p([](auto u, auto v){ return u; }); }; auto Second = [](auto p){ return p([](auto u, auto v){ return v; }); }; int main(){ auto t = Pair(1,"two"); auto one = First(t); auto two = Second(t);
cout << one <<endl;
cout << two << endl; return 0; }
实现Second和First,实现打印出U和V
结果分别输出1和two
////////////////////////////////
简单解析:
1.首先,t是一个函数,它有输入参数f。f对输入参数u和v进行处理。
这个输入参数f,就是我们要实现的。
2.First,它有一个输入参数。我们在First中实现一个lambda表达式,这个表达式,它有两个输入参数,然后,返回第一个输入参数。这个实现的lambda表达式就是f。
这样,就可以实现。
/////////////////////
全文完
版权声明:
作者:ttylinux
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。