我找到了一篇包含此代码的文章:
template <typename ReturnType, typename... Args>
std::function<ReturnType (Args...)>
memoize(std::function<ReturnType (Args...)> func)
{
std::map<std::tuple<Args...>, ReturnType> cache;
return ([=](Args... args) mutable {
std::tuple<Args...> t(args...);
if (cache.find(t) == cache.end())
cache[t] = func(args...);
return cache[t];
});
}
你能解释一下吗?我在这里看不懂很多东西,但最奇怪的是缓存是本地的而不是静态的,但也许我错了......