Я пытаюсь работать с лямбдами в C ++ после того, как много их использовал в C #. В настоящее время у меня есть буст-кортеж (это действительно упрощенная версия).
typedef shared_ptr<Foo> (*StringFooCreator)(std::string, int, bool)
typedef tuple<StringFooCreator> FooTuple
Затем я загружаю функцию в глобальном пространстве имен в мой FooTuple. В идеале я хотел бы заменить это на лямбду.
tuplearray[i] = FooTuple([](string bar, int rc, bool eom) -> {return shared_ptr<Foo>(new Foo(bar, rc, eom));});
Я не могу понять, какой должна быть сигнатура функции для лямбда-кортежа. Это явно не указатель на функцию, но я не могу понять, какой должна быть лямбда-сигнатура. Ресурсы для лямбды сейчас довольно тонкие. Я понимаю, что C ++ 0x в данный момент находится в движении, но мне было интересно, как заставить это работать. Я также понимаю, что есть более простые способы сделать это, но я просто играю с C ++ 0x. Я использую компилятор Intel 11.1.