Escribiendo la función de memoria universal en C ++ 11

¿Está buscando una manera de implementar una función de memoización genérica universal que tome una función y devuelva la versión memorizada de la misma?

Buscando algo como decorador de @memo (del sitio de Norving) en python.

def memo(f):
    table = {}
    def fmemo(*args):
        if args not in table:
            table[args] = f(*args)
        return table[args]
    fmemo.memo = table
    return fmemo

En general, ¿existe una forma de expresar decoradores genéricos y reutilizables en C ++, posiblemente utilizando las nuevas características de C ++ 11?

Respuestas a la pregunta(4)

Su respuesta a la pregunta