Boost Lambda/Phoenix-如何处理返回另一个Lambda的Lambda
Boost Lambda/Phoenix - how to do lambda which returns another lambda?
Boost Lambda/Phoenix是否支持开箱即用的Lambda之类的返回另一个Lambda的东西?
例如,它可以用来进行某种货币兑换:
std::cout << [](int x){return [=](int y){return x+y;};}(1)(2);
如何使用Boost Lambda/Phoenix实现类似的目的(+作为奖励-我们将获得多态行为(?
Boost Phoenix Scope:let/lambda
现场演示:
#include <boost/phoenix.hpp>
#include <iostream>
#include <ostream>
using namespace std;
using namespace boost;
using namespace phoenix;
using namespace arg_names;
using namespace local_names;
int main()
{
// capture by reference:
cout <<
(lambda(_a=_1)[_1 + _a ])(1)(2)
<< endl;
cout <<
(lambda(_b=_1)[lambda(_a=_1)[_1 + _a + _b ]])(1)(2)(3)
<< endl;
// capture by value:
cout <<
(lambda(_a=val(_1))[_1 + _a ])(1)(2)
<< endl;
cout <<
(lambda(_b=val(_1))[lambda(_a=val(_1))[_1 + _a + _b ]])(1)(2)(3)
<< endl;
}
输出为:
3
6
3
6
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 处理多个异常集合的C++方法
- Visual C++: MSVC vs. GCC+CLANG: 处理 lambda 捕获类成员变量,正确的方法是什么?
- 容器如何处理 lambda 表达式的参数
- 当使用lambda进行变量的复杂初始化时,如何处理从内部抛出的lambda外部异常
- 我可以让返回类型自动处理具有相同签名但捕获不同内容的 lambda 吗?
- 如何避免使用 lambda 进行代码重复的常量和非常量集合处理
- 解除 lambda 事件处理程序的绑定
- 处理重构、模板 SFINAE 测试和 lambda
- 编译器如何以不同于常规函数的方式处理 lambda?
- 使用Auto和Lambda处理信号
- C++ 如何处理循环中使用的 lambda 表达式for_each返回值
- 在c++ lambda表达式中调用类成员函数失败.处理步骤
- 如何在pre-lambda编译器中处理lambda
- 为什么成员函数尝试块处理程序中的 lambda(捕获"this")无法访问 VC++ 2013 中的私有数据成员?
- Boost Lambda/Phoenix-如何处理返回另一个Lambda的Lambda
- 使用 lambda 函数处理 C++ libsigc++ 信号
- 如何使用lambda来boost异步完成处理程序