【发布时间】:2014-10-26 10:56:11
【问题描述】:
以下递归 lambda 调用如何结束/终止?
#include <cstdio>
auto terminal = [](auto term) // <---------+
{ // |
return [=] (auto func) // | ???
{ // |
return terminal(func(term)); // >---------+
};
};
auto main() -> int
{
auto hello =[](auto s){ fprintf(s,"Hello\n"); return s; };
auto world =[](auto s){ fprintf(s,"World\n"); return s; };
terminal(stdout)
(hello)
(world) ;
return 0;
}
我在这里错过了什么?
【问题讨论】:
-
这个列表不错的一个:gnu.org/fun/jokes/helloworld.html
-
其实我对这个(是/可以)如何调用很感兴趣,所以我发布了一个后续问题:stackoverflow.com/questions/25619769/…
-
this question 的重复?
-
也许您打算使用
return terminal(func)(term);而不是return terminal(func(term));?请注意,terminal在执行任何操作之前需要使用参数 两次 调用。 -
天哪,这:“auto main() -> int”太糟糕了。当旧工具已经非常适合这项工作时,尝试使用新工具并不有趣。还是“int main()”是 2010 年?