有没有办法创建一个typedef
这样的(y-combinator的基本“纯”实现)可以编译?
typedef ??? f;
[](f x){x(x);} ([](f x){x(x);});
这具有创建“递归 lambda”的效果,即通过使用第二个 lambda 来调用自身以获取对自身的引用。x
在第一个 lambda 中是对第二个 lambda 的引用,因此x(x)
使用对自身的引用调用第二个 lambda。此后,第二个 lambda 通过调用递归x(x)
。这段代码在执行时应该会产生一个无限循环,直到它遇到堆栈溢出。第二个函数的更复杂的实现可以产生任意递归行为。
我已经尝试过typedef
各种版本,void(*)(...)
但我不相信可以成功。我的模板元编程不够强大,无法处理这种事情。