【发布时间】:2013-02-11 04:42:05
【问题描述】:
Boost Lambda/Phoenix 是否支持开箱即用的东西,比如返回另一个 lambda 的 lambda?
例如,可以用来做某种柯里化:
std::cout << [](int x){return [=](int y){return x+y;};}(1)(2);
如何使用 Boost Lambda/Phoenix 实现类似的目的(+ 作为奖励 - 我们将获得多态行为)?
【问题讨论】:
-
我试图回答这个问题时遇到的问题是
arg1被最外层的bind消耗——我想要一个arg1我可以传递给内部的bind,但是外部bind吃掉它。如果我有办法“逃避”参数占位符...... -
@Yakk,您可以尝试使用 boost::bind - AFAIK 它不同于 lambda/phoenix 绑定(boost.org/doc/libs/1_53_0/doc/html/lambda/s08.html#idp111396608)。另外,发布您尝试的代码作为答案 - 赏金将于明天结束......
标签: c++ boost lambda functional-programming currying