Написание универсальной функции запоминания в C ++ 11

Ищете способ реализовать универсальную универсальную функцию запоминания, которая возьмет функцию и вернет запомненную версию?

Ищете что-то вроде @memo (от Norving 'с сайта) оформитель в питоне.

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

Если говорить в более общем смысле, есть ли способ выразить универсальные и повторно используемые декораторы в C ++, возможно, используя новые функции C ++ 11?