没有C++ 0x的C++ lambda函数?

joe*_*oey 1 c++ lambda boost

我有一个C++ 11 lambda函数,它需要在没有C++ 0x的情况下实现.到目前为止,我用boost.lambda试了一下但没有成功.

lambda函数捕获4个变量并将2作为参数.在lambda函数的主体中有几个if/else,case和大约100行代码.

  • 这甚至可以通过boost.lambda /如何实现?
  • 如果你能指出一个图书馆/举个例子,我会很高兴的.

希望我写下你需要的所有信息.

€:我跑了,谢谢.一点点跟进问题:

  • 还有一种方法可以给Obj.operater()(); 另一个函数作为回调函数/函数指针?

我的第一次尝试是这样的:

    Lambda Obj( C, D);
    command ( Obj.operator()(typeA A, typeB B));
Run Code Online (Sandbox Code Playgroud)

谢谢

Rei*_*ica 6

这不是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的未命名类型.