在 C# 中大量使用 lambda 之后,我正在尝试在 C++ 中使用它们。我目前有一个 boost 元组(这是真正简化的版本)。
typedef shared_ptr<Foo> (*StringFooCreator)(std::string, int, bool)
typedef tuple<StringFooCreator> FooTuple
然后我将全局命名空间中的一个函数加载到我的 FooTuple 中。理想情况下,我想用 lambda 替换它。
tuplearray[i] = FooTuple([](string bar, int rc, bool eom) -> {return shared_ptr<Foo>(new Foo(bar, rc, eom));});
我无法弄清楚 lambda 元组的函数签名应该是什么。它显然不是函数指针,但我无法弄清楚 lambda 的签名应该是什么。lambda 的资源现在都很稀少。我意识到 C++0x 目前正在不断变化,但我很好奇如何让它工作。我也意识到有更简单的方法可以做到这一点,但我只是在玩 C++0x。我正在使用 Intel 11.1 编译器。