// lambda.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
using namespace std;
auto Pair = [](auto u, auto v) {
return [=](auto f) {
return f(u, v);
};
};
auto First = [](auto p) {
auto temp = [](auto u, auto v) {return u; };
return p(temp);
};
auto Second = [=](auto p) {
auto temp = [](auto u, auto v) {return v; };
return p(temp);
};
void PrintAll(nullptr_t) {
}
template<typename T>
void PrintAll(T t) {
cout << First(t) << endl;
PrintAll(Second(t));
}
int main()
{
std::cout << "Hello World!\n";
auto t = Pair(1, "two");
auto one = First(t);
auto two = Second(t);
cout << one << ", " << two << endl;
auto numbers = Pair(1, Pair(2, Pair(3, Pair(4, Pair(5, nullptr)))));
PrintAll(numbers);
}
这代码设计,lambda表达式和元编程,说实话我是没看懂,但是好神奇!!!
让你实现一个 pair 但是这个pair和 std::pair 不一样 不需要提前在模板定义类型 还能存储两个任意的值
auto t = Pair(1, "two");
auto one = First(t);
auto two = Second(t);
这样就能吧one 赋值为1 two赋值位2 问你 Pair First Second 怎么写