Zastanawiam się, czy można napisać funkcję zwracającą funkcję lambda w C ++ 11. Oczywiście problemem jest zadeklarowanie takiej funkcji. Każda lambda ma typ, ale tego typu nie można wyrazić w C ++. Myślę, że to nie zadziała:
auto retFun() -> decltype ([](int x) -> int)
{
return [](int x) { return x; }
}
Ani to:
int(int) retFun();
Nie jestem świadomy żadnych automatycznych konwersji z lambd na, powiedzmy, wskaźników do funkcji lub podobnych. Czy jedynym rozwiązaniem jest ręczne tworzenie obiektu funkcji i zwracanie go?