我有一个C++ 11 lambda函数,它需要在没有C++ 0x的情况下实现.到目前为止,我用boost.lambda试了一下但没有成功.
lambda函数捕获4个变量并将2作为参数.在lambda函数的主体中有几个if/else,case和大约100行代码.
希望我写下你需要的所有信息.
€:我跑了,谢谢.一点点跟进问题:
我的第一次尝试是这样的:
Lambda Obj( C, D);
command ( Obj.operator()(typeA A, typeB B));
Run Code Online (Sandbox Code Playgroud)
谢谢
这不是Boost.Lambda的设计目标.最好的办法是将其转换为普通的功能对象.
简单地改变这个:
[a, &b, c, &d](args) -> ReturnValue { body; }
Run Code Online (Sandbox Code Playgroud)
进入:
class Lambda
{
Type_of_a a;
Type_of_b &b;
Type_of_c c;
Type_of_d &d;
public:
Lambda(Type_of_a a, Type_of_b &b, Type_of_c c, Type_of_d &d) : a(a), b(b), c(c), d(d) {}
ReturnValue operator() (args) const
{ body; }
};
Run Code Online (Sandbox Code Playgroud)
并创建一个Lambda创建原始lambda表达式的类的实例.
您可以将定义Lambda放在未命名的命名空间中,以模拟lambda的未命名类型.
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |