Что делает этот код C ++ 11 (memoize)?

Я нашел статью , которая содержит этот код:

template 
std::function
memoize(std::function func)
{
    std::map, ReturnType> cache;
    return ([=](Args... args) mutable {
            std::tuple t(args...);
            if (cache.find(t) == cache.end())                
                cache[t] = func(args...);
            return cache[t];
    });
}

Вы можете объяснить это, пожалуйста? Я не могу здесь многое понять, но самое странное то, что кеш локальный, а не статический, но, возможно, я ошибаюсь и ...

15
задан Jarod42 10 January 2014 в 14:43
поделиться