一道lambda表达式题目

#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。
 
这样,就可以实现。

  

/////////////////////

全文完

原文地址:https://www.cnblogs.com/ttylinux/p/6368574.html