Возможный дубликат:
Рекурсивные лямбда-функции в С++ 0x
Вот простая старая рекурсивная функция:
int fak(int n)
{
return (n <= 1) ? 1 : n * fak(n - 1);
}
Как написать такую рекурсивную функцию, как лямбда-функцию?
[](int n) { return (n <= 1) ? 1 : n * operator()(n - 1); }
// error: operator() not defined
[](int n) { return (n <= 1) ? 1 : n * (*this)(n - 1); }
// error: this wasn't captured for this lambda function
Есть ли какое-либо выражение, которое обозначает текущую лямбда, чтобы он мог называть себя рекурсивно?