Share a multi-type map between users
问题 In this and this question I talked about (and proposed a solution) to write a multi-function memoizator. This is my solution: template <typename ReturnType, typename... Args> function<ReturnType(Args...)> memoize(function<ReturnType(Args...)> func) { return ([=](Args... args) mutable { static map<tuple<Args...>, ReturnType> cache; tuple<Args...> t(args...); auto result = cache.insert(make_pair(t, ReturnType{})); if (result.second) { // insertion succeeded so the value wasn't cached already