Escrevendo a função de memorização Universal no C ++ 11

Procurando uma maneira de implementar uma função de memorização genérica universal que terá uma função e retornará a versão memoizada do mesmo?

Procurando por algo como @memo (do site de Norving) decorador em 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

Indo mais geral, existe uma maneira de expressar decoradores genéricos e reutilizáveis ​​em C ++, possivelmente usando os novos recursos do C ++ 11?

questionAnswers(4)

yourAnswerToTheQuestion