
int i = i + 5;
Но это правомочно. Куда более полезным может оказаться лямбда, которая может
вызывать самое себя:
#include <functional>
const std::function<std::size_t (const std::size_t)> f_fib =
[&f_fib](const std::size_t v) {
if (v <= 1)
return v;
return f_fib(v - 2) + f_fib(v - 1);
};
std::cout << f_fib(25); // 75025
Имя объекта
f_fib
используется в списке захвата лямбды, чтобы иметь возможность рекурсивно
вызвать себя. Обернуть всё в
std::function
необходимо для того, чтобы избежать проблемы курицы и яйца: если написать
auto, то компилятор не сможет понять во что развернуть auto, поскольку
f_fib
захватывает самое себя.